C:给出分段错误的指针数组

时间:2014-08-17 17:50:25

标签: c arrays pointers

我正在学习指针数组的概念,我想知道为什么这段代码会给我一个分段错误,

#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;
}

请帮助!!!

1 个答案:

答案 0 :(得分:1)

ptr[i]表示占据阵列中位置编号i的元素的内容,同时考虑到第一个是0。您的数组已声明有空间来容纳三个指向整数的指针。使用{0}初始化数组,您告诉计算机将0存储在第一个指针中,该指针占据第一个位置(位置0)。默认情况下,数组的其余元素会使用0自动初始化。因此,所有三个指针都指向0位置,这是非法的位置。因此,当您尝试显示每个指针(*ptr[i])指示的内存内容时,会出现分段错误错误。

最好的问候