Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的指针_C_Pointers - Fatal编程技术网

C语言中的指针

C语言中的指针,c,pointers,C,Pointers,在windows操作系统中,我在visual studio中执行上述代码 我只为一个项目分配了内存,但我能为第二个项目赋值吗?这怎么可能?如何限制它 我没有收到任何编译器错误。这称为未定义行为。您已经分配了一个大小为1的int数组。访问超出分配空间的内存位置是未定义的行为。这意味着从那时起,编译器可以自由地做它想做的事情。它可能会抛出错误,或使程序在运行时崩溃,或其他任何情况 在C编程语言中,您可以直接访问内存。此外,出于性能原因,没有对数组进行任何索引检查、空指针检查等。要限制它,您可能必须对

在windows操作系统中,我在visual studio中执行上述代码

我只为一个项目分配了内存,但我能为第二个项目赋值吗?这怎么可能?如何限制它


我没有收到任何编译器错误。

这称为未定义行为。您已经分配了一个大小为1的
int
数组。访问超出分配空间的内存位置是未定义的行为。这意味着从那时起,编译器可以自由地做它想做的事情。它可能会抛出错误,或使程序在运行时崩溃,或其他任何情况

在C编程语言中,您可以直接访问内存。此外,出于性能原因,没有对数组进行任何索引检查、空指针检查等。要限制它,您可能必须对索引执行自己的检查。

这是未定义的行为,因此无法预知会发生什么。很可能是内存损坏,可能是访问冲突。“如何限制它?”不这样做。也许您的编译器或静态代码分析器会给您一个警告。C根本没有边界检查(甚至对实际数组也没有)。作为一名程序员,你有责任确保自己不越界。另外,请阅读
int *p = (int*)malloc(sizeof(int)*1);

p[0]=2;

p[1]=3;