C语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数),通过数组占内存总空间/单个元素占内存空间大小,即可得到数组的元素个数
成都创新互联公司公司2013年成立,先为融水等服务建站,融水等地企业,进行企业商务咨询服务。为融水企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
例如
但是,通过将数组作为函数参数传递到函数中,以获得数组长度是不可行的
例如
原因:数组arr是函数参数,在函数中,arr只是一个指针(地址,系统在本函数运行时,是不知道arr所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(arr)的结果是指针变量arr占内存的大小,一般在32位机上是4个字节。arr[0]是int类型,sizeof(arr[0])也是4个字节,所以,结果永远是1。
如果想要在被调用的函数中,得知原数组的大小,可以再给函数添加一个参数,用于指定数组的大小,让外界调用函数前就讲数组的大小传递进来
C中数组名代表该数组的首地址,
char
s[]="abc";
s代表的就是‘a’在内存中的地址
以地址作参数
,实参和形参同时改变
这个选择题的答案是C,即当数组名作为函数参数时,传递给被调函数的是数组的第一个元素(下标为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