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/