Objective-C"const"问题

sta*_*rob 1 const objective-c

维基百科称"const"是"......一种特殊的变量,其值在执行过程中通常不会被程序改变......"

如果是这种情况,为什么会这样:

const char *words[4] = { "aardvark", "abacus", 
                             "allude", "zygote" };

    *words = "first";
    words[1] = "second";

    int wordCount = 4;

    int i;
    for (i = 0; i < wordCount; i++) {
        NSLog (@"%s is %d characters long",
               words[i], strlen(words[i]));
    }
Run Code Online (Sandbox Code Playgroud)

有一个输出:"第一""第二""暗示""合子"(显然与长度等)

我认为"const"的重点是防止被修改的变量?

ken*_*ytm 19

const仅适用于char,即字符串本身的内容,而不是数组.如果您希望数组的内容也是常量,则需要添加const到每个级别:

char const* const words[4] = { "aardvark", "abacus", "allude", "zygote" };
//   ^      ^
//   |      This makes words[x] = "abc"; fails.
//   |
//   This makes words[x][y] = 'a'; fails
Run Code Online (Sandbox Code Playgroud)