1

所以我需要一个指向 const char 数组中的值的指针。但我不能让它在没有错误的情况下正常工作。这是代码。

int main (void)
{
    const char *alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    char *ptr = &alp[3];

    printf("%s\n", ptr);

    return 0;
}

编辑-抱歉没有提到错误。问题是我会得到大量不同的错误,具体取决于我在哪里放置了不同的星号和 & 号。没有一个特别的错误。我得到的一个更常见的说法是“从'const char'分配给'char *'的不兼容整数到指针转换;”

最后,我只希望“ptr”等于数组“alp”中指向“D”的指针。

4

3 回答 3

4

如果您只想打印一个字符,请更改%sto%c并取消引用指针

printf("%c\n", *ptr);

确实,您有一个字符指针,但%s告诉 printf 从该指针打印,直到它读取一个空字符。所以我们切换到%cwhich 将打印一个字符,但它需要一个值而不是指向值的指针。

于 2013-06-07T20:04:55.487 回答
2

alp是一个指向常量的指针char

ptr是指向非 const 的指针char

如果你想解决这个问题,你需要改变ptr定义为:

char const * ptr = &alp[3];
于 2013-06-07T21:23:18.660 回答
0

const 表示您不会更改它,但随后您尝试将引用复制到没有该限制的变量。相反,请尝试:

const char *ptr = &alp[3];

但请注意,正如其他海报已经建议的那样,此代码将为您提供一个指向以 D 开头的字符串(例如 DEFGHI ...)的指针,而不仅仅是字符 D。

于 2013-06-07T21:23:13.397 回答