我正在学习指针数组的概念,我想知道为什么这段代码会给我一个分段错误,
#include <stdio.h>
int main()
{
int i, *ptr[3] = { 0 };
for (i = 0; i < 3; i++)
printf("Value of var[%d] = %d\n", i, *ptr[i]);
return 0;
}
请帮助!!!
答案 0 :(得分:1)
ptr[i]
表示占据阵列中位置编号i
的元素的内容,同时考虑到第一个是0
。您的数组已声明有空间来容纳三个指向整数的指针。使用{0}
初始化数组,您告诉计算机将0
存储在第一个指针中,该指针占据第一个位置(位置0
)。默认情况下,数组的其余元素会使用0
自动初始化。因此,所有三个指针都指向0
位置,这是非法的位置。因此,当您尝试显示每个指针(*ptr[i])
指示的内存内容时,会出现分段错误错误。
最好的问候