我想将指针向前移动一个字节。但是我收到此错误:
lvalue required as increment operand
使用此代码:
int **test = 0;
((char *) *test)++;
但这没关系:
int **test = 0;
char **t2 = (char **) test;
(*t2)++;
我如何简洁地做后者?
如果要递增双指针指向的值:
(* (char **) test)++;
这意味着取消引用名为"test"的双指针,然后递增它当前指向的值。
这也将增加指针指向的值,而不是前进指针本身。这就是我认为您在示例代码中尝试执行的操作。
尝试使用
(*(char **)test)++;
与公认的答案相反,我相信唯一的方法是:
int **test = 0;
test = (int **)((char *)test + 1);
任何带有取消引用*
的表达式,例如 (*(char **)test)++
,虽然它可以编译,但通常会给出分割错误,因为它正在访问内存位置0
。