在 C 中,我正在玩弄一个链接列表,看看有什么 printf
当传递不同版本的变量名称时将显示。
typedef struct node{
int node_value
struct node *next;
} list_node;
int main(){
list_node *list;
list = getnode();
printf("address of *list %d\n", &list);
printf("list->next of *list %d\n", list);
printf("list->next of *list %d\n", list->next);
printf("double pointer **list %d\n", *list);
return 0;
}
*list
将打印node_value
但是 &list and list
之间有什么区别? ?我知道&是对变量的引用,而没有*的变量名是第一个条目的地址。但是,当我输出两者时得到不同的值时。
谢谢。
最佳答案
不!你说的是 C 和 C++ 的一些混淆。这是C代码。 C 没有引用。
在 C 和 C++ 中,&
运算符可应用于对象,以便检索其在内存中的地址,从而生成指针。和引用没有任何关系。即使在 C++ 中也是如此。
在 C++ 中,您可以使用与符号 (&
) 来定义引用:
int i;
int& b = i; // reference referencing i
但这在 C 语言中是不可能的。
<小时/>顺便说一句,printf
对特定类型使用特定的格式说明符。 %d
代表 int
。对于指针(如 &i
),请使用 %p
。错误使用错误的格式说明符是未定义的行为。
关于c - 链表的指针变量 : difference between the variable, 对该变量的引用,以及指向该变量的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013813/