重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果对全部元素都赋初值,则定义数组时对第一维的大小可以忽略,但第二维的大小不能省。例如:
创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为红古企业提供专业的网站设计制作、做网站,红古网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
int a[][4]=;
与下面的代码是等价的:
int a[3][4]=;
编译器会根据数据总个数分配空间,每行4列,所以确定该数组为3行。
#include stdio.h
int func(int a[],int n)
{
int i,cnt;
for(cnt=0,i=0;in;++i)
if(a[i])
cnt++;
return cnt;
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
printf("%d\n",func(a,10));
return 0;
}
实参是a,它可以作为指针名使用,等同于指向首元a[0]的指针。形参int a[]等价于int *a,它指向实参a数组的首元a[0]的地址。
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#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