首页 > 代码库 > 指针的陷阱

指针的陷阱

    你也许感觉对指针已经了如指掌了, 但是也可能还没注意到下面所述的一些简单的问题. 当然, 如果已经注意到这些陷阱了, 那就最好不过了.
    大家应该都知道, 通过指针是可以修改其指向的对象的值的, 请看下面的情况:
            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标准禁止对字符串子面值进行修改.    

 

指针的陷阱