C语言 将指针移动一个字节



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

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

相关内容

  • 没有找到相关文章

最新更新