我试图了解指针递增和取消引用如何结合在一起,我这样做是为了尝试一下:
#include <stdio.h>
int main(int argc, char *argv[])
{
char *words[] = {"word1","word2"};
printf("%p\n",words);
printf("%s\n",*words++);
printf("%p\n",words);
return 0;
}
我希望这段代码能够执行以下操作之一:
- 首先取消引用,然后增加指针(打印 word1)
- 首先取消引用,然后增加值(打印 ord1)
- 取消引用指针 + 1(打印 word2)
但是编译器甚至不会编译它,并给出以下错误:需要左值作为增量操作数
我在这里做错了什么吗?
最佳答案
您不能递增数组,但可以递增指针。如果将声明的数组转换为指针,您将使其正常工作:
#include <stdio.h>
int main(int argc, char *argv[])
{
const char *ww[] = {"word1","word2"};
const char **words = ww;
printf("%p\n",words);
printf("%s\n",*words++);
printf("%p\n",words);
return 0;
}
关于c - 指针递增和解引用(需要左值错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10150428/