我需要在结构中封装一个文字字符串.下面的代码不会编译,但希望说明我想做什么?
struct my_struct
{
char* str = "string literal";
};
Run Code Online (Sandbox Code Playgroud)
nos*_*nos 16
您无法初始化结构声明中的任何成员.您必须在创建结构实例时初始化结构.
struct my_struct
{
char* str;
};
int main(int argc,char *argv[])
{
struct my_struct foo = {"string literal"};
...
}
Run Code Online (Sandbox Code Playgroud)
由于您希望 str成员引用字符串文字,因此您最好将其const char *str设为a ,因为您无法以任何方式修改字符串文字.
每次都将结构初始化为已知状态.
struct my_struct
{
const char* str;
int bar;
};
void init_my_struct(strut my_struct *s)
{
s->str = "string literal";
s->bar = 0;
}
int main(int argc,char *argv[])
{
struct my_struct foo;
init_my_struct(&foo);
Run Code Online (Sandbox Code Playgroud)
struct my_struct
{
const char* str;
int bar;
};
#define MY_STRUCT_INITIALIZER {"string literal",0}
int main(int argc,char *argv[])
{
struct my_struct foo = MY_STRUCT_INITALIZER;
Run Code Online (Sandbox Code Playgroud)
struct my_struct
{
const char* str;
int bar;
};
const struct my_struct my_struct_init = {"string_literal",0};
int main(int argc,char *argv[])
{
struct my_struct foo = my_struct_init;
Run Code Online (Sandbox Code Playgroud)