传递值与传递引用/指针混淆

时间:2014-01-24 08:23:00

标签: java c

声明之后

 void insert_LL(Node *head, int data);

当被调用时,头指针的副本到达该函数,因此如果在头部添加节点,则改变头的值。但是,因为我们有头的本地副本所以实际的头指针不会改变。所以我们声明如下

 void insert_LL(Node **head, int data);

我的问题:

  1. 上述说明是否正确?

  2. 如果是,那么这意味着在C中,它始终是值传递(在函数中到达指针的副本),这与Java中的相同。我是对的吗?

  3. 如果是,那么如何通过引用/指针进入图片?

2 个答案:

答案 0 :(得分:1)

1-是

2-是

3- In C, Pass-by-reference is simulated by passing the address of a variable (a pointer) and dereferencing that address within the function to read or write the actual variable. This is referred as "C style pass-by-reference.".

答案 1 :(得分:0)

按引用传递不是C中使用的术语。传递指针变量的地址值。编译器存储对变量的引用,其中包含赋予变量的内存位置的名称。

引用和指针之间的主要区别在于“指针”可以取任何地址值,除非使其成为“const”。而当你通过参考,你不能。

What are the differences between a pointer variable and a reference variable in C++?

这个主题将完成所有需要。