int main( ){
    char a[2];
    char *p;
    p=&a[0];
    *(p+5)='g';
}

在上面的程序中,我定义了一个指向char数组的指针,但是数组只有3个字节。让我更清楚地告诉您,例如,让我们假设char数组地址是1000,所以它最多需要1003字节,但是使用指针,我在1005位置存储ASCII值“g”。编译器可以吗?那是静态分配内存吗?还是可以再用?这个值是否会永久存储在其中?

最佳答案

您正在更改程序中的随机内存位置。这是undefined behavior并且可能会对程序产生随机影响,例如分段错误。

关于c - 指向char数组的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6543947/

10-12 17:27
查看更多