C语言问题,如何检测int的数组长,不要用a[]='\0'的方法。

sizeof()能用么?貌似sizeof()是检测内存大小的,如果不规定数组大小,就可以用sizeof,但是规定了就不好用了(如下)。请教高人,有没有其他方法?
int a[]={1,2,3,4,5,6,7}; 检测数组长就可以sizeof(a)/sizeof(int)来做,但是如果a[10]={1,2,3,4,5,6,7}; 那就不行了。

a[10]={1,2,3,4,5,6,7}; 也可以用sizeof(a)/sizeof(int)来做,结果是10,因为那个数组长是10而不是7,后面几个元素是默认值0。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-01
可以用strlen检测长度的数组前提是:1.必须是字符数组2.数组的所有元素都为非零元素
第2个回答  2011-05-01
是无法直接检测int的数组长的,a[10]={1,23},a[10]={23,43,45}编译器怎么知道里面有多少个呢?只有在输入数据时自己另外加上!
第3个回答  2011-05-01
可以啊,如果没有规定数组大小的话,sizeof()就是测的后面所有赋值元素的大小。比如,一个int为2个字节。int a[]={1,2,3,4,5,6,7}然后用sizeof(a)测出就是14。如果规定了数组大小。测出的就是给定数组量值的大小。比如,int a[10]={1,2,3,4,5,6,7}然后用sizeof(a)测出后就是20.这时,数组后三个元素的值默认为0.
第4个回答  2011-05-04
注意一下,
/* 字符串从小到大排序 */
这个是指的将字符串按照字典顺序排序,而不是指按照他们的长度大小排序

字典顺序排序的方法是:
从第一个字母开始比较,字母小的(a<b<c<d...以此类推),就认为字符串小,也就是排在前面
如果第一个字母相同,则比较第二个...

所以:
“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”
排序后的结果为:
aabdfg
abbd
abc
cd
dcdbe

所以p[0]中存放的为aabdfg
另外,虚机团上产品团购,超级便宜
相似回答