码迷,mamicode.com
首页 > 编程语言 > 详细

C结构体变量2种运算(比如链表的结点)(区别与java)

时间:2017-11-01 01:08:34      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:赋值   变量   span   两种   log   最大的   方式   而不是   成员变量   

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实体本生,所以不能直接操作,只能间接。

  

 

技术分享

 

C结构体变量2种运算(比如链表的结点)(区别与java)

标签:赋值   变量   span   两种   log   最大的   方式   而不是   成员变量   

原文地址:http://www.cnblogs.com/cs-lcy/p/7764395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!