【发布时间】:2015-03-03 19:51:22
【问题描述】:
我无法弄清楚这段代码有什么问题(并且在之前的问答中找不到任何建议):
#include<stdio.h>
void fld(const int **b){
int i, j ;
printf("Hello R\n");
for (i=0; i<3; i++){
for (j = 0; j<3; j++)
printf("%d", b[i][j]);
printf("\n");
}
return;
}
int main(){
int i, j;
int b[3][3] = {
{1,1,1},
{1,2,1},
{2,2,2}
};
fld((void **)b);
system("pause");
return;
}
我尝试将矩阵传递给函数 fld 并打印出来,但它在运行代码时不断报告分段错误。
【问题讨论】:
-
数组数组不是指向指针的指针。尝试在不使用
(void **)强制转换的情况下传递数组 - 编译器会对你大喊。 -
我该如何纠正它?
-
@userXXX 首先不将数组视为指针。
-
不要通过强制转换来强迫事情。
-
你的
fld()函数应该接受一个数组,或者你的数组应该被转换成一个指针数组。
标签: c segmentation-fault argument-passing