所以我需要一个指向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”的指针。
答案 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.