C中的数组初始化会导致访问冲突

时间:2015-03-26 18:12:18

标签: c

有人可以让我摆脱苦难并告诉我为什么在用数组初始化数组时会出现访问冲突吗?

#include <stdio.h>

void initData(float **data, size_t N)
{
    int i;
    *data = (float*)malloc( N * sizeof(float) );

    for (i=0; i<N; i++)
    {
        *data[i] = 1.0;
    }
}

void main()
{
    float *data;
    initData(&data,8);
}

1 个答案:

答案 0 :(得分:14)

取消引用(*)的优先级低于方括号运算符[]。 你写的内容因此被有效地翻译成:

*(data[i]) = 1.0;

其失败不应该让任何人感到惊讶。

将其更改为:

(*data)[i] = 1.0;

它不会破裂。

<小时/> Include stdlib.h摆脱警告。