我不完全确定哪种方法是给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,因此修改其内容是非法的,因此第一种方法是正确的。

09-10 11:44