在函数内部使用指针



为什么每次在函数内声明指针参数并开始在函数内使用它时,每次在函数中以某种方式使用指针变量时,都需要在指针变量旁边使用星号?为什么会这样呢?

如果您来自像Java这样的语言,在哪里:

AbstractBeanFactorySingletonStubWrapper w = new MyBeanFactorySingletonStubWrapper();

你基本上可以看到,除了对w引用解除引用(例如调用方法)之外,你唯一能做的事情就是对null进行测试。

这很简单,不需要任何额外的语法来处理引用。

然而,在C和c++中,您可以使用以下命令:

int val[] = {5, 6};
int *p = val;
(*p)++;
p++;

(*p)++p++之间有一个关键的区别:前者像Java一样对值进行操作,而后者对指针进行操作。

总之,因为C和c++允许你用指针做比Java和c#等语言更多的事情,所以指针需要一些额外的语法。

你可以问"为什么不取消引用"。语法(就像在Java中一样),并且需要这些其他指针操作的额外语法?我不确定,但是对指针解引用的行为,没有对其进行任何进一步的操作,是它自己的操作(可能会出现段错误),所以给它额外的语法似乎是合适的。

因为这是C语言中指针的工作方式——为了访问指向对象,您可以使用一元*操作符指针解引用。

这不是自动的,因为有时你想处理指针值本身。

最新更新