zoukankan      html  css  js  c++  java
  • C结构体变量2种运算(比如链表的结点)(区别与java)

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

      

  • 相关阅读:
    RabbitMQ消费端自定义监听器DefaultConsumer
    RabbitMQ exchange交换机类型
    RabbitMQ 快速入门
    chrome jsonView插件安装
    谈谈令人头大的prototype 和__proto__
    原生JS写一个淡入淡出轮播图
    模拟聊天对话框
    全选反选的小案例
    原生js做一个简单的进度条
    点击回到顶部的按钮
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7764395.html
Copyright © 2011-2022 走看看