即a[0]=0
for(j<MAXj++)
{
if(a[j]==NULL)//如果数组为空则返回当前数组的下标,即为数组元素的个数
{ //或者这样写a[j]=='\0'
m=j
printf("%d\n",m)
break
}
}
所以上面程序j=0时,a[0] == NULL是TRUE,所以打印出m为0啊
所以你可以将赋值语句改一下即可
for(i=1i<=10i++)
{
a[i]=i//对十个数组依次赋值
}
C语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数),通过数组占内存总空间/单个元素占内存空间大小,即可得到数组的元素个数例如
但是,通过将数组作为函数参数传递到函数中,以获得数组长度是不可行的
例如
原因:数组arr是函数参数,在函数中,arr只是一个指针(地址,系统在本函数运行时,是不知道arr所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(arr)的结果是指针变量arr占内存的大小,一般在32位机上是4个字节。arr[0]是int类型,sizeof(arr[0])也是4个字节,所以,结果永远是1。
如果想要在被调用的函数中,得知原数组的大小,可以再给函数添加一个参数,用于指定数组的大小,让外界调用函数前就讲数组的大小传递进来
有一个函数就是为了获取数组元素个数的:sizeof!原理是:sizeof获取数组的长度然后除以数据类型所占的长度得到元素个数
我简单写下代码:
int a[100]={1,2,3,4} int len=sizeof(a)/sizeof(int) printf("%d\n",len)
以上为原来的回答,有错误:
在给定数组大小时候sizeof这个方法就不起作用了,我当时没注意犯了错误有些误人子弟了
原谅我一年以后才来修改这个答案~
我想了想int数组默认全是0称为初始化,姑且说非0为有效元素
while(i<100)
{
if(a[i]!=0)
count++
i++
}
遍历,记录
字符数组有结束符,只要找到结束符的位置就可以了