strlen((char*)arr);编译器报错:initializer element is not constant
时间: 2023-12-18 07:02:38 浏览: 63
C++中char*转换为LPCWSTR的解决方案
5星 · 资源好评率100%
在C语言中,初始化器(initializer)必须是常量表达式。`strlen()`函数的参数是一个指针,而指针的值在编译时期是无法确定的,因此无法将其作为初始化器来使用。
如果你想在程序中获取数组`arr`的长度,可以在运行时使用`strlen()`函数来计算字符串的长度,而不是在初始化时进行。例如:
```c
char arr[] = "Hello";
size_t len = strlen(arr);
```
在上面的代码中,我们先定义了一个字符数组`arr`,并将其初始化为字符串常量"Hello"。然后,我们使用`strlen()`函数计算了数组`arr`中的字符串长度,并将结果赋值给变量`len`。
请注意,为了使用`strlen()`函数,需要包含头文件`<string.h>`。同时,确保数组中的最后一个字符是空字符`\0`,以便`strlen()`函数能够正确计算字符串的长度。
阅读全文