在C++中,数组不能简单地作为参数传递。在C++中将函数参数作为函数参数传递
void doSomething(char charArray[])
{
// if I want the array size
int size = sizeof(charArray);
// NO GOOD, will always get 4 (as in 4 bytes in the pointer)
}
我有没有办法知道数组有多大,因为我只有一个指针数组:如果我创建了一个功能,像这样的意思。
在不更改方法签名的情况下,我可以通过哪种方式获取数组大小并迭代它的数据?
编辑:只是关于解决方案的补充。如果字符数组,具体而言,被初始化像这样:
char charArray[] = "i am a string";
则\0
已经附加到该阵列的端部。在这种情况下,答案(标记为接受)可以开箱即用,可以这么说。
实际上这里有一个相当大的误解,你的例子中的语法没有任何意义:函数在栈上获取未知数量的数据。忽略你原来的语法,并给函数签名`void doSomething(char * charArray)`。如果你用char数组[10]; doSomething(array) //c-faq.com/aryptr/aryptrparam.html – kfsone 2013-06-02 17:53:24