C语言如何知道一个数组大小,比如int a[1000]={1,2,3,4,5,6};里面有随机个数,怎么知道又有几个数,

sizeof(a)/sizeof(a[0])用不了了

/*请看代码,希望能帮到你*/
#include <stdio.h>

int main(void)
{
    int a[1000] = {1,2,3,4}; //数组中没有赋值的元素,程序都默认为0;
    int num = 0;
    
    for(int i = 0; i < 1000; ++i)
    {
        if(a[i] == 0)
            break;
        ++num;
    }
    
    printf("数组里有%d个有效数字。\n",num); 
    return 0;
}

追问

您这个不对

如果我的数组有0呢

那岂不是0个数啦

我感觉应该以一个特殊的数为结束标志

追答

那如果那个特殊数也属于数组内的呢

追问

是呀

我也不会

追答

那你用字符串吧,数字数组是没有办法的

追问

我这里如果直接a[]={1,2,3,4,5,6}就可以啦

我干嘛要a[1000],我是不是傻

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-09-06
为啥用不了,这样可以得到 1000 啊追问

我不要得到1000,我要得到6

for循环里用

追答

那你觉得数组里剩下的 0 是有用还是无用的数据?

追问

无用

追答

也就是说如果你输入的数字是 0,就直接看作是数据结束了?

追问

我要把这些数排序

但是,万一我的数组里有0呢

如int a[1000]={0,1,50,0}

有办法吗。

追答

所以你必须要想一个方法,要么用另外一个变量记录有用数据的个数,要么在数组里用一个很特别的数字代表数据的结束,例如一个很大的负数

追问

对对对

有道理

追答

那就可以自己写一个函数来获取了,我觉得 ‭-268435456‬ 这个数可以吧。。。

追问

好像没有用

追答

为何没有用?如果不用标记,或者不用其他变量记录数量,那你为何不用 int a[] = { 1, 2, 3, 4, 5, 6, 7 }?这样长度是自动计算的,当然就不能再后续添加了

追问

我傻了

干嘛a[1000]

本回答被提问者采纳
相似回答