您的位置:首页 > 编程语言 > C语言/C++

C/C++ 获取数组的有效长度

2015-01-09 16:41 239 查看
有人提议说在C/C++中,使用

sizeof(array) / sizeof(array[0]);

来获取数组的长度(C++中可以使用模板,进行类型匹配)这是不可行的。

<pre name="code" class="cpp">int a[60] = { 1, 2, 3, 4 };
cout<< sizeof(a);


输出为2400。

而如果程序更改为:

char a[] = { 1, 2, 3, 4 };
虽然大小的确是16,但是已经没有实际的意义了。

所以C/C++中并不能获取数组的长度,只能使用指针去判断结束的位置之后计算。
如果是字符型数组:

<del>char a[60] = { 1, 2, 3, 4 };
int t = 0;
while (a[t] != '\0')	t++;
cout << t;</del>
t的值即为字符数组的有效长度。

更正,使用strlen(a)函数即可。

如果是普通的数组,未被赋值的位置会被赋值于0,所以程序写成如下形式:

int a[60] = { 1, 2, 3, 4 };
int t = 0;
while (a[t] != 0)	t++;
cout << t;
t的值即为数组的有效长度。

但是问题来了。如果输入的数值中有0怎么办?我觉得这也是为什么普通的数组无法直接输出的原因,因为编译系统没法判断是什么地方结束。
所以我建议在赋值的时候加上一个特别的得数对其后面的一个位置进行赋值,然后以这个标志位作为检测的标志位。
我还是初学者,如果您知道什么更好的方法请留言,谢谢。
参考:http://blog.csdn.net/bopzhou/article/details/6063163
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++程序设计 c++