C语言 在函数内部增加指针



我正在用C写一个程序,只是为了好玩(和锻炼),我偶然发现了这种行为,我不明白…不能使用++操作符

对函数内的指针进行递增操作。
void fn(void **p)
{
*p++;
// other options like *p+=1 or ++*p work, but I dont understand why...
}

谁能解释一下(对于一个新手;))为什么这不起作用?我很好奇。

您似乎是通过指向该函数的指针间接传递指向该函数的指针。

要使原指针递增,需要对指向原指针的指针解引用,然后再对其递增。

例如

++*p;

否则这个表达式语句

*p++;

不增加原指针,因为该语句等价于

*( p++ );

由于运算符的优先级。

实际上上面的语句等价于

p++;

,因为没有使用操作符*的结果。

另一方面,即使你写的语句是正确的(根据逻辑)

++*p;

这是没有意义的,因为你可能不会增加类型为void *的指针(尽管一些编译器允许这样的操作类型的指针类型void *类似于char *类型),因为类型void是一个不完整的类型,不能完成。

相关内容

  • 没有找到相关文章

最新更新