将多维数组传递/修改为C中的函数
我已经5-6年没有使用C了,我觉得这可能是一个非常明显的答案 我认为数组是在C中通过引用自动传递的,所以下面的代码应该修改在change函数的main()中创建的数组的值。它会在change函数中更改局部变量的值,但之后不会在main函数中反映出来 下面是我的示例代码:将多维数组传递/修改为C中的函数,c,multidimensional-array,pass-by-reference,C,Multidimensional Array,Pass By Reference,我已经5-6年没有使用C了,我觉得这可能是一个非常明显的答案 我认为数组是在C中通过引用自动传递的,所以下面的代码应该修改在change函数的main()中创建的数组的值。它会在change函数中更改局部变量的值,但之后不会在main函数中反映出来 下面是我的示例代码: int main(){ int array[3][5]; int i; int j;\ printf("BEFORE (MAIN):\n"); for(i = 0; i < 3; i++){ for(j = 0; j
int main(){
int array[3][5];
int i;
int j;\
printf("BEFORE (MAIN):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 1;
printf("%i, ", array[i][j]);
}
}
printf("\n\n");
change(array);
printf("\n");
printf("AFTER (MAIN):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 1;
printf("%i, ", array[i][j]);
}
}
printf("\n");
return 1;
}
void change(int array[][5]){
printf("PRECHANGE (CHANGE):\n");
int i;
int j;
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
printf("%i, ", array[i][j]);
}
}
printf("\n\n");
printf("AFTER CHANGE (CHANGE):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 0;
printf("%i, ", array[i][j]);
}
}
printf("\n");
}
intmain(){
整数数组[3][5];
int i;
int j\
printf(“前(主):\n”);
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
数组[i][j]=1;
printf(“%i”,数组[i][j]);
}
}
printf(“\n\n”);
改变(数组);
printf(“\n”);
printf(“后(主):\n”);
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
数组[i][j]=1;
printf(“%i”,数组[i][j]);
}
}
printf(“\n”);
返回1;
}
无效更改(整数数组[][5]){
printf(“变更前(变更):\n”);
int i;
int j;
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
printf(“%i”,数组[i][j]);
}
}
printf(“\n\n”);
printf(“变更后(变更):\n”);
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
数组[i][j]=0;
printf(“%i”,数组[i][j]);
}
}
printf(“\n”);
}
结果如下:
之前(主要):
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
变更前(变更):
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
变更后(变更):
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
在(主要)之后:
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
我本以为应该是这样的:
之前(主要):
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
变更前(变更):
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
变更后(变更):
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
在(主要)之后:
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
如果将该值设置为1
printf("AFTER (MAIN):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 1; /* set to 1 and print afterwards */
printf("%i, ", array[i][j]);
}
}
printf(“之后(主):\n”);
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
数组[i][j]=1;/*设置为1,然后打印*/
printf(“%i”,数组[i][j]);
}
}
为什么希望打印0?如果将值设置为1
printf("AFTER (MAIN):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 1; /* set to 1 and print afterwards */
printf("%i, ", array[i][j]);
}
}
printf(“之后(主):\n”);
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
数组[i][j]=1;/*设置为1,然后打印*/
printf(“%i”,数组[i][j]);
}
}
为什么希望打印0?这一点很好!FFS!现在在我的真实程序上试用,看看为什么不起作用。说得好!FFS!现在在我的真实程序上试用,看看为什么不起作用。