在作为char传递后得到数组的长度*

ewo*_*wok 4 c++ arrays pointers char

可能重复:
C编程语言中数组的大小?

我有以下形式的代码:

void arrLen(char* array){
    // print length
}

int main(){
    char bytes[16];
    arrLen(bytes);
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是获取底层数组的长度并将其打印出来.问题是数组可能包含NULL CHARACTERS,因此strlen不起作用.有没有办法做到这一点,还是我必须把它作为一个char[]而不是char*

und*_*ndu 6

C样式数组不携带长度信息.

您可以使用以下几种解决方案:

将数组的大小传递给您的函数:

void arrLen(char* array, std::size_t size)
Run Code Online (Sandbox Code Playgroud)

如果您可以访问C++ 11(或注释中提到的TR1),请使用std :: array

 std::array<char, 16> bytes;
Run Code Online (Sandbox Code Playgroud)

如果您无权访问std :: array,则可以使用boost :: array.它们大致相当于标准的.

关于你的评论

我是否必须将其作为char []而不是char*传递?

数组将被传递给函数的指针,所以void arrLen(char* array)void arrLen(char[] array)是等价的.