指向数组中的值?

时间:2013-06-07 19:57:41

标签: c arrays pointers

所以我需要一个指向const char数组中的值的指针。但我无法让它毫无错误地工作。这是代码。

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

    char *ptr = &alp[3];

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

    return 0;
}

编辑 - 很抱歉没有提到错误。问题是我得到了大量不同的错误,具体取决于我放置不同的星号和&符号的位置。没有一个特定的错误。我得到的更频繁的一个说     “不兼容的整数到指针转换分配给'char *'       来自'const char';“

最后我只想让“ptr”等于数组“alp”中指向“D”的指针。

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

alp是指向常量char的指针。

ptr是指向非const char的指针。

如果您想要解决这个问题,则需要将ptr更改为:

char const * ptr = &alp[3];

答案 2 :(得分:0)

const表示你不会改变它,但是你试图将引用复制到一个没有这个限制的变量。相反,尝试:

const char *ptr = &alp[3];

但请注意,正如其他海报已经建议的那样,这段代码会给你一个指向以D开头的字符串的指针(例如DEFGHI ...),而不仅仅是字符D.