【发布时间】:2018-08-18 03:25:05
【问题描述】:
我对以下代码的输出感到困惑:
char *s[]={"knowledge","is","power"};
char t[]={"Hello"};
char **p,*q;
p=s;
q=t;
cout<<++*p;
cout<<*p++;
cout<<++*p;
cout<<++*q;
现在,输出是nowledge nowlegde s I。
请解释两个数组中的内存分配是如何发生的。
【问题讨论】:
-
查看operator precedence order in C++。然后,简化语句以使它们有意义。
-
通过使用无效的指针值访问数组,您也有未定义的行为。
-
指针运算是需要小心的。
-
试试这个链接,在指针算术下。这应该可以消除您的疑虑cplusplus.com/doc/tutorial/pointers
标签: c++ arrays string pointers