作为赋值的左操作数需要左值(试图设置指针)

时间:2015-07-02 22:09:07

标签: c pointers gcc

我想要做的是设置指针的值#34;指向" at to char,就像你可以将char设置为指针"指向"于:

catch

但是当我尝试这个时:

 char = (pointer - int);

我收到错误

(pointer - int) = char;

我做错了什么?

1 个答案:

答案 0 :(得分:0)

假设您尝试将字符位置设置在指针所指向的位置的左侧,您需要这样的内容:

char string[] = "Hello, world!";
printf("%s\n", string);            /* original string */
char *pointer = &string[12];       /* points to the ! */
int offset = 5;                    /* w is 5 to the left of ! */
*(pointer - offset) = 'W';         /* changes world to World */
printf("%s\n", string);            /* see the result */

如果这是你想要做的事情,你可能也想知道这类事情的核心是数组和指针之间的对等"在C.你也可以将改变字符的表达式写为

pointer[-offset] = 'W';            /* changes world to World */

这将完全相同。 (实际上,根据定义,对于任何数组或指针p以及任何偏移o,下标表达式p[o]都完全等同于*(p + o)。)