我不完全确定哪种方法是给aconst char *
分配常数的正确方法两种方法都可以吗?
#define MSG1 "My Message #1"
#define MSG2 "My Message #2"
#define MSG3 "My Message #3"
const char *opt1 = NULL;
const char opt2[20];
switch(n){
case 1:
opt1 = MSG1;
// or should it be:
strcpy(opt2, MSG1);
break;
case 2:
opt1 = MSG2;
// or should it be:
strcpy(opt2, MSG2);
break;
case 3:
opt1 = MSG3;
// or should it be:
strcpy(opt2, MSG3);
break;
}
// ...
printf("%s", optX);
最佳答案
opt1 = MSG1;
将指定指针
opt1
指向MSG1
所指向的字符串文本。strcpy(opt2, MSG1);
将
MSG1
的内容复制到数组opt2
。由于您将
opt2
声明为const
,因此修改其内容是非法的,因此第一种方法是正确的。