[問題] 請教一些觀念題(指標,容量,reference)

看板C_and_CPP作者 (小天)時間9年前 (2014/10/25 14:01), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/2 (看更多)
ex1: char a = 0x80; cout<< a ; // -128 cout<< a+1; // -127 觀念: 變數超過上限,會從下限重新循環 unsigned int a = pow(2,32)+1; cout << a; // 1 這邊也和上面的觀念一致 問題一: int a = pow(2,31); cout << a; // -2147483658 int b = pow(2,31)+1; cout << b; // -2147283658 為什麼在int的情況就無法循環呢? ex2: void test(char *&a) { // 問題二 cout << sizeof(a)/sizeof(char);// 想要在函數裡知道傳進來矩陣的長度 試了一些方式都不成功, 請問有辦法達成這個功能嗎? } int main() { char a[] = {'1','2','\0'}; char *b = "12"; test(a);//報錯 test(b);//正常 //問題三:在沒有reference的情況兩個都可以傳進去,但有reference 後矩陣就傳不進去了,為什麼? return 0; } ex3: 置底十三誡的第八誡要表達什麼呢? 我編譯出來沒遇到什麼問題 置底十三誡的第九誡,MACRO(++x)應該也跟第八誡要表達的一樣 想請問這兩邊要闡述什麼樣的觀念呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414216904.A.439.html

10/25 15:51, , 1F
前面的觀念是錯的,overflow是undefined behavior
10/25 15:51, 1F

10/25 17:45, , 2F
問題二可以用 template 達成
10/25 17:45, 2F

10/25 17:47, , 3F
問題三,array 不會 decay 成 ref to pointer
10/25 17:47, 3F

10/25 17:51, , 4F
另外,pointer to string literal 記得加 const
10/25 17:51, 4F

10/31 04:03, , 5F
問題二有兩種傳法,一種是參考,一種是指標
10/31 04:03, 5F

10/31 04:07, , 6F
先寫指標的方式void test(char *);這是宣告式
10/31 04:07, 6F

10/31 04:09, , 7F
再來是參考,void test(char (&a)[3]);
10/31 04:09, 7F
文章代碼(AID): #1KIpp8Gv (C_and_CPP)
文章代碼(AID): #1KIpp8Gv (C_and_CPP)