【发布时间】:2017-01-20 04:59:09
【问题描述】:
我必须找到 int 数组中元素的确切数量,留下在声明期间生效的 '\0's。我知道'\0' 的值等于0 .即('\0' == 0) = true。
#include<iostream.h>
int getsize(int arr[])
{
int i = 0,p=1;// initialized to 1 as, if left un-initialised it suffers from undefined behaviour
while(p!=NULL)
{
i++;p=arrr[i]'
}
return i;
}
代码在 main 中调用时可以正常工作:
void main()
{
int testarr[10]={0,5};
cout<<"\nThe size is : "<<getsize(testarr);
}
但是当testarr[]修改为int testarr[10]={5,0}时
输出变成了
The size is : 1
问题是史前涡轮 c++ 编译器,不幸的是,我仅限于读取 int 0 和 '\0' 相同。我使用 NULL 代替,但是代码没有似乎工作。我有什么遗漏吗?
【问题讨论】:
-
什么是用户自定义元素?
-
一般来说,你不能通过检查数组的元素来找到数组的大小。作为一种特殊情况,您可以将字符数组初始化为文字字符串,编译器将为您终止它。你不能用整数数组来做到这一点。
-
我不能检查空指针
-
@Danh 我的意思是
testrarr[10]={5,0},因为默认情况下,在初始化过程中,它会将数组中的所有值填充为\0a.k.a null character not nullpionter
标签: c++ arrays c++03 turbo-c++