一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
10年的双峰网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整双峰建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“双峰网站设计”,“双峰网站推广”以来,每个客户项目都认真落实执行。
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#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
c语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!
你的
代码
不全,我只能给你分析一下这种情况常见的错误了。
1、要返回
数组
定义
在子
函数
中。在函数体内部定义的数据
变量
,如果未加修饰符(static和extern),那么她是局部的,函数执行完毕之后
内存
释放,造成你访问
错误
。你
下边
的那个例子定义的数组是
全局变量
,先不说了下班了晚上补充
很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看
#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;
}
}
例:
#includestdio.h
void fact(int *p, int n)
{
for(i = 0; i n; ++i)
{
printf("%d ", p + i);
}
printf("\n");
p[3] = 6;
}
int main()
{
int a[5] = {1, 2, 3, 4, 5};
fact(a, 5);
for(i = 0; i 5; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}