c++ 判断数组长度

来源:百度知道 编辑:UC知道 时间:2024/06/18 10:46:59
Template <typename T>
int length(T *Arr);
请问Arr长度怎么判断?
for(int i = 0;;i++)
{
if(Arr[i] == NULL)
return i;
}
这样写哪里错了?

一楼说的对,这里数组作为参数,基本上是无法判定的。一维数组作参数可以省略维数,二维要有一个列参数;

并不是所有的数组都以 '\n'结束,数组的起始地址好说,但是结束呢?怎么判定? == NULL,永远不会满足。除非,你的数组牺牲一个元素,比如最后一个元素里有个变量来记录是否是最后一个,但是这样太浪费了。

就算是实现了,但是要注意,对于普通类型还好说,但是对于类呢?
要注意,派生类的数组名 一定不能 给 基类的指针赋值。
因为基类不了解派生类的大小,p++ ,不知道指向哪里。

其实对于类,可以用 静态变量来记录实例个数,只是他记录的是程序的该类的所有对象个数

说了这么多,还是无法实现,呵呵

QQ:380208702
新C++讨论群: 50687905
欢迎,大家一起讨论C++ ,大家一块学习.呵呵

这个没法判断的。
Arr[i] == NULL是没法得到结果的。
你定义一个字符数组,什么都不干,然后你去输出下试试就知道了。

对于这个问题,既然已经用了模板了,为什么不再加一个模板参数。
Template <typename T,unsigned int Size>
int SomeFunction(T Arr[Size])
{
//在这里Size是编译期常数,你随便用。
}
这样做,就根本不需要运行期去求长度了。

arr的长度是无法判定的,除非不是作为参数时可以判定。

Arr[i]只是一个数组元素而已,怎么能跟NULL比较?

除了字串没法判断, 你加个长度作为参数吧
别取length了