Re: [問題] pointer to char位址的問題

看板C_and_CPP作者 (小天)時間11年前 (2014/08/31 14:19), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串3/4 (看更多)
十分感謝L大的解惑 不過我在測試時又有了另外的小疑惑... ex1: char a[] = "123"; cout << &a <<endl; //a的位址 cout << a <<endl; //123 cout << *(a+1) <<endl; //2 cout << *(*(&a+1)-2) << endl; //印出3 ex2: void test(char a[]) { cout << &a <<endl; //a的位址 cout << a <<endl; //123 cout << *(a+1) <<endl; //2 cout<< *(*(&a+1)-2) << endl;//爆掉了 } int main() { char a[] = "123"; test(a);//執行後爆掉了 } 為什麼在函數裡就爆了呢? 想不出來... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409465961.A.93F.html

08/31 14:21, , 1F
因為 test() 不知道 a 的長度,只知道 a 的位置
08/31 14:21, 1F

08/31 14:22, , 2F
ex1 因為是在char a[]="123"在同一個函數內,所以可以
08/31 14:22, 2F

08/31 14:23, , 3F
拿來算 a 的 type (char[4]),但 ex2 中 test 只知道 a
08/31 14:23, 3F

08/31 14:25, , 4F
是 char[] ,不知道長度,所以不知道要怎樣算 &a+1
08/31 14:25, 4F

08/31 14:40, , 5F
我了解了!! 謝謝大家的解惑!!
08/31 14:40, 5F

09/01 16:04, , 6F
推推
09/01 16:04, 6F
文章代碼(AID): #1K0hvfa_ (C_and_CPP)
文章代碼(AID): #1K0hvfa_ (C_and_CPP)