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

作者: kdok123 (小天)   2014-08-31 14:19:19
十分感謝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);//執行後爆掉了
}
為什麼在函數裡就爆了呢? 想不出來...
作者: kerwinhui (kezza)   2014-08-31 14:21:00
因為 test() 不知道 a 的長度,只知道 a 的位置ex1 因為是在char a[]="123"在同一個函數內,所以可以拿來算 a 的 type (char[4]),但 ex2 中 test 只知道 a是 char[] ,不知道長度,所以不知道要怎樣算 &a+1
作者: kdok123 (小天)   2014-08-31 14:40:00
我了解了!! 謝謝大家的解惑!!
作者: masan22305 (海豹)   2014-09-01 16:04:00
推推

Links booklink

Contact Us: admin [ a t ] ucptt.com