a结构体变量,只能做两种运算,
整体引用(赋值,参数传递)
或访问成员(点运算—地址方式简化,地址方式)(见最后的图片)
case万:
结论:java里面的class Node ; Node p; p是这个实体本身,这个p指针直接进行节点间操作
而C里面的 struct LNode *p 只能只能间接去操作一个节点并不是这个节点本生
C提供->运算符直接操作成员变量
struct LNode{ int val; struct LNode *next; //不能出现 struct LNode next这种啊 } struct LNode n1,n2; n1.val=100; //整体赋值 n2 = n1 //传参数 function(struct LNode n){ 可以操作变量n了 } 实参这样写 function(n1) 最大的区别与Java的就是n1是不能直接输出的,java里面的直接输出是地址 n1.next = n2 ,而在c里面,n1.next=&n2 在java里面的头指针head是一个实体(链表节点) , 而C里面就是一个指针变量,里面存的是地址 java里面的指针就是这个节点本生,比如LNode p = n2, p.next 就是下一个节点了 而C中 LNode *p = &n2 ; p指向了这个节点,而不是这个节点本生,(以后见到指针马上想到这个实体) p不是这个节点n2实体本生,所以不能直接操作,只能间接。
时间: 2024-10-21 04:23:35