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*?
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)是等价的.
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |