指向 2d int 数组的指针 vs 指向 2d char a 的指针。区别对待

时间:2021-05-01 08:26:02

标签: c

如果我有这个

Terminal.app

并尝试去做

 int (*p)[2];

它会抛出segFault。应该。

但是如果我有

 *(*(p))=5;

有人能解释一下为什么指向 char (*p)[2]; *(*(p))=5; //works *(*(p+1))=7; //works 的指针与 C 中的 2d char array 的处理方式不同吗

1 个答案:

答案 0 :(得分:2)

不幸的是,有效(显然)是格式错误的程序的可能结果之一。指针没有分配给它的内存,dereferencing it 是未定义的行为。

它还可以让编译器击垮你,如this Q&A中所述。

至于作品部分,here you can see it doesn't,(顺便说一句,139 返回码是一个分段错误)。

相关问题