c语言 请问这个函数调用的时候,是把实参赋值给形参吗?就是a[][N]=a,n=3

如题所述

第1个回答  2017-12-26
void fun(int a[][N],int n){}
int a[N][N]={1,2,3,4,5,6,7,8,9};
fun(a,3); 这个调用 实际上是用 a 的首地址来调用 函数。它既把 int a[N][N];的元素们的值传入了函数,并能把函数加工后的值带回来。
例如:
#include <stdio.h>
#define N 3
void fun(int a[][N],int n){
int i,j;
for(j=0;j<n;j++) for (i=0;i<n;i++) printf("%d ",a[j][i]);
printf("\n");
a[0][0]=888; // 加工了1个元素
}
int main( )
{
int a[N][N]={1,2,3,4,5,6,7,8,9};
fun(a,3);
printf("After: %d %d ...",a[0][0],a[0][1]);
return 0;
}
传入函数: 1 2 3 4 5 6 7 8 9
调用过后 After: 888 2 ...追问

a是地址,为何可以赋值给a[][N]?而a[][N]不是指针

本回答被网友采纳
相似回答
大家正在搜