c - 从函数 C 分配数组和赋值

标签 c arrays function pointers segmentation-fault

C题

你好,

我将一个 double 指针传递给一个函数以分配一个 double 组并在函数内部初始化数组,假设为 10.10;

我执行了以下操作,但在访问 main 中的数组时出现段错误;

void function(double **array, int size){

    *array = (double*) malloc(size * sizeof(double)); 
    int i;
    for(i=0;i<size;i++){
    *array[i] = 10.10;
    }


}

int main(){

    double *array = NULL;

    function(&array,20);
    printf("array[0] = %lg\n",array[0]);// here is where I get segmentation fault


}

有什么帮助吗?

最佳答案

您违反了运算符优先级。

改变:

for(i=0;i<size;i++){
    *array[i] = 10.10;
}

到:

for(i=0;i<size;i++){
    (*array)[i] = 10.10;
}

请注意,如果您在启用警告的情况下进行编译(例如 gcc -Wall ...),您的编译器会为您捕捉到这一点。 始终在启用警告的情况下进行编译,并且始终注意、理解并修复任何警告。

关于c - 从函数 C 分配数组和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401301/

相关文章:

c - strcat + strlen 有奇怪的行为

java - 如何将 HashMap 转换为条目数组

java - 基于整数的舍入问题

python - 如何删除数据框中每个组中的重复项?

c - 如何将指针中的值保存到 char 数组中?

C - 从字符串中提取所有数字

c - 将双指针地址传递给三指针时分配内存时遇到问题

javascript - 当值为空时删除数组对象

swift - 如何向以编程方式制作的按钮添加操作?

c - 当用户输入空行时做一些特别的事情