将指针移动一个字节

时间:2014-02-28 03:52:05

标签: c pointers pointer-arithmetic

我想将指针向前移动一个字节。 但是我得到了这个错误:

lvalue required as increment operand

使用此代码:

int **test = 0;
((char *) *test)++;

但这很好:

int **test = 0;
char **t2 = (char **) test;
(*t2)++;

我如何简洁地完成后者?

3 个答案:

答案 0 :(得分:2)

尝试使用

(*(char **)test)++;

答案 1 :(得分:2)

如果要增加双指针指向的值:

(* (char **) test)++;

表示取消引用名为" test"的双指针。然后递增它当前指向的值。

这将增加指针指向的值,而不是使指针本身前进。 这就是我认为您在示例代码中尝试做的事情。

答案 2 :(得分:0)

与接受的答案相反,我认为唯一的方法是:

int **test = 0;
test = (int **)((char *)test + 1);

任何带有解除引用*的表达式,例如(*(char **)test)++,虽然它可能会编译,但通常会产生分段错误,因为它正在访问内存位置0