作者kdok123 (小天)
看板C_and_CPP
標題[問題] 請教一些觀念題(指標,容量,reference)
時間Sat Oct 25 14:01:41 2014
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
推 littleshan: 前面的觀念是錯的,overflow是undefined behavior 10/25 15:51
→ carylorrk: 問題二可以用 template 達成 10/25 17:45
→ carylorrk: 問題三,array 不會 decay 成 ref to pointer 10/25 17:47
→ carylorrk: 另外,pointer to string literal 記得加 const 10/25 17:51
→ chobitskey: 問題二有兩種傳法,一種是參考,一種是指標 10/31 04:03
→ chobitskey: 先寫指標的方式void test(char *);這是宣告式 10/31 04:07
→ chobitskey: 再來是參考,void test(char (&a)[3]); 10/31 04:09