你也许感觉对指针已经了如指掌了, 但是也可能还没注意到下面所述的一些简单的问题. 当然, 如果已经注意到这些陷阱了, 那就最好不过了.
大家应该都知道, 通过指针是可以修改其指向的对象的值的, 请看下面的情况:
int i = 10;
int *p = &i;
int *q = NULL;
q = p;
*q = 7;
cout << i << endl; // i == 7;
以上是普通的情况. 那么请接着看下面的内容:
char *p = NULL;
char *q = NULL;
p = "hello, c++ \n";
q = p;
q[1] = ‘E‘; // q所指向的内存现在存储的是字符串"hEllo, c++ \n"
需要各位注意的是, 某些c编译器允许这种修改行为, 但ANSI C标准禁止对字符串子面值进行修改.
时间: 2024-10-08 10:28:50