如何使用字符串文字初始化 const char []

zDo*_*tor 3 c++ arrays constants declaration c-strings

我想做以下事情:

const char errorMsg [64] ( useApple ? "Error Msg Apple\n" : "Error Msg Bee\n" );
MyMethod ( errorMsg );
Run Code Online (Sandbox Code Playgroud)

对于带有签名的方法:

MyMethod(const char* errorMessageInput );
Run Code Online (Sandbox Code Playgroud)

我有一个使用 const char* 的方法,我想在发送它之前创建一个局部变量。我无法分配动态内存,但我可以使用比需要更大的数组(在这种情况下,我将其设为 64)。我将如何编译此代码?

Vla*_*cow 5

您可以声明一个指针,而不是数组

const char *errorMsg = useApple ? "Error Msg Apple\n" : "Error Msg Bee\n";
Run Code Online (Sandbox Code Playgroud)

实际上,如果方法参数的类型为 ,则无需声明常量数组const char *

你可以写例如

#include <cstring>

//...


char errorMsg [64];

strcpy( errorMsg, useApple ? "Error Msg Apple\n" : "Error Msg Bee\n" );
Run Code Online (Sandbox Code Playgroud)

然后使用数组作为方法的参数。

  • @zDoctor:这不会在堆栈上创建数组。该代码将“Error Msg Apple\n”和“Error Msg Bee\n”作为二进制文件的一部分,这会在堆栈上创建一个指向其中之一的_pointer_。 (4认同)