为什么每次在函数内声明指针参数并开始在函数内使用它时,每次在函数中以某种方式使用指针变量时,都需要在指针变量旁边使用星号?为什么会这样呢?
如果您来自像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语言中指针的工作方式——为了访问指向对象,您可以使用一元*
操作符对指针解引用。
这不是自动的,因为有时你想处理指针值本身。