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