
正文
函数传参是数组C语言,C语言函数传参
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在C语言中,数组作为参数,是怎样在函数之间传递的啊??
数组作为参数是按地址传递的
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
相关问答
Q1: c语言 数组作为参数传递
调用时把【】去掉,表示掉用这个数组的所有元素,数组的名称表示数组第一个元素的地址。
数组的定义可以写成:
int
table[]={1,2,3,}
或者table[3],不能写成table[],因为系统在定义数组时就给数组分配了地址,table[]没有确定元素的个数,不能分配地址空间。
但是作为形参,可以这样写,void
tab(int
table[])
,不知道为什么,呵呵
Q2: C语言中,数组作为参数,怎样在函数之间传递的?
很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看
#includestdio.h
#define N 3
int array[N][N];
void main()
{
//在主函数内声明被调函数
void convert(int array[][3]);
int i,j;
printf("输入数组:\n");
for(j=0;jN;j++)
for(i=0;iN;i++)
scanf("%d",array[i][j]);
printf("\n");
for(j=0;jN;j++)
{
for(i=0;iN;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//调用矩阵转置函数
convert(array);
printf("\n");
for(i=0;iN;i++)
{
for(j=0;jN;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;iN;i++)
for(j=0;jN;j++)//设置数组中转置矩阵元素交换
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
Q3: c语言怎么将数组作为函数参数传入?
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#includestdio.h
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100







