我想将指针向前移动一个字节。 但是我得到了这个错误:
lvalue required as increment operand
使用此代码:
int **test = 0;
((char *) *test)++;
但这很好:
int **test = 0;
char **t2 = (char **) test;
(*t2)++;
我如何简洁地完成后者?
答案 0 :(得分:2)
尝试使用
(*(char **)test)++;
答案 1 :(得分:2)
如果要增加双指针指向的值:
(* (char **) test)++;
表示取消引用名为" test"的双指针。然后递增它当前指向的值。
这将增加指针指向的值,而不是使指针本身前进。 这就是我认为您在示例代码中尝试做的事情。
答案 2 :(得分:0)
与接受的答案相反,我认为唯一的方法是:
int **test = 0;
test = (int **)((char *)test + 1);
任何带有解除引用*
的表达式,例如(*(char **)test)++
,虽然它可能会编译,但通常会产生分段错误,因为它正在访问内存位置0
。