C语言数组元素的个数问题

Python017

C语言数组元素的个数问题,第1张

首先

int

n[9]是定义一个元素个数为9个的数组,n[0]---n[8],并不是10个元素。题意要求从编号为1开始输出,从n[1]到n[8]整好8个数,如果定义成n[8],只能只能保证前七个数正确,即n[1]—n[7].

但在这里for(i=1i<9i++)printf("%d

",n[i])最后一个n[8]根本不在你定义的数组n[8]里,数组n[8]是从n[0]—n[7]!!所以你输出的n[8]是一个随机的数。

C语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数),通过数组占内存总空间/单个元素占内存空间大小,即可得到数组的元素个数

例如

但是,通过将数组作为函数参数传递到函数中,以获得数组长度是不可行的

例如

原因:数组arr是函数参数,在函数中,arr只是一个指针(地址,系统在本函数运行时,是不知道arr所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(arr)的结果是指针变量arr占内存的大小,一般在32位机上是4个字节。arr[0]是int类型,sizeof(arr[0])也是4个字节,所以,结果永远是1。

如果想要在被调用的函数中,得知原数组的大小,可以再给函数添加一个参数,用于指定数组的大小,让外界调用函数前就讲数组的大小传递进来