69,373
社区成员
发帖
与我相关
我的任务
分享
strcpy(str, "World!"); // 正确但不安全
strncpy(str,"World!",9);str[9]=0;//完全正确
char str[10] = "Hello!";
str[0] = 'h'; // 正确
str[10] = 'H'; // 越界但语法正确
str[10] = "World!"; // 越界且语法不正确,类型不匹配
strcpy(str, "World!"); // 正确
对于结构体成员,写法是一样的,只是前面多了一个 "p." 或 "p->" 而已。如果你连这段代码都会犯错误,只能说明基础不扎实。// 字符指针和字符数组的初始化:
char *ps = "Hello!";
char str[256] = "Hello!";
// 运行时刻重新赋值:
// 对于指针而言,只是改变了指针指向
ps = "World!";
// 对于数组而言,改写内存区域的内容
strcpy(str, "World!");
// 结构体同理:
// 结构体字符指针和字符数组成员的初始化:
typedef struct { const char *p; } STRUCT_A;
typedef struct { char str[256]; } STRUCT_B;
// 指针和数组初始化方式相同:
STRUCT_A st_a = { "Hello!" };
STRUCT_B st_b = { "Hello!" };
// 运行时刻重新赋值(同上):
st_a.p = "World!";
strcpy(st_b.str, "World!");