zoukankan      html  css  js  c++  java
  • c语言中结构体指针

    1、指向结构体的指针变量:
    C 语言中->是一个总体,它是用于指向结构体,如果我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体。那么我们要用指针取出结构体中的数据。就要用到指向运算符“->”.
     
     
    举例说明: 
    struct SunLL
    {
      int a; 
      int b; 
      int c;
    };         
     
    struct SunLL  * p;               //定义结构体指针
    struct SunLL A = {1,2,3};    //定义一个SunLL类型的变量A
     
    int x;                                //定义一个变量x
    p = &A ;                          //让p指向A
    x = p->a;                       //等价于  x=(*p).a         (*p)表示p指向的结构体变量 
                                   //这句话的意思就是取出p所指向的结构体中包括的数据项a赋值给x
    //因为此时p指向A。因而 p->a == A.a,也就是1
     
    2、指向结构体数组的指针变量: 
    指向结构体的指针变量也能够指向结构体数组及其元素。
     
     
    假设程序例如以下: 
    struct SunLL *p,sun[3]; 
    p = sun; 
    假设假定sun[0]的地址是1000。指针变量p指向结构体数组sun的首地址,因为size of(struct SunLL)的值是6。每一个结构体元素占内存空间6个字节,因此p+1指向地址1006。p+2指向地址1012. 
     
    使用指针变量指向结构体变量或结构体数组时,应注意运算符的优先级,在c语言中"()" "[ ]" "->" "."四个优先级同样,具有最高的优先级,其次是”*“ ”++“ ”--“ ”&“四个同样优先级的运算符。如:++P->a的表达式等价于++(p->a) 
     
    (++p)->a先计算++p,p指向sun[1]; 
    P++->a;则表达式等价于(p++)->a; 
    p->a++的表达式等价于(p->a)++; 
     
    3、结构体作为函数參数与结构体指针作为函数參数
     
     
    举例1 
    struct st 

    int a;  
    char b。 
    }; 
     
    fun(struct st bc) 

    bc.a+=5; 
    bc.b='A'; 
    printf("%d,%c ",bc.a,bc.b); 
    }
      
    main() 

    struct st bl; 
    bl.a=3; 
    bl.b="c"; 
    fun(bl); 
    printf("%d,%c ",bl.a,bl.b); 

     
    执行结果为:8。A        3。c 
     
    举例2: 
    struct st 

    int a; 
    char b; 
    }。 
     
    fun(struct st *bp) 

    bp->a+=5; 
    bp->b='A'; 
    printf("%d,%c ",bc.a,bc.b); 
    }
     
    main() 

    struct st bl; 
    bl.a=3; 
    bl.b="c"; 
    fun(&bl); 
    printf("%d,%c ",bl.a,bl.b); 

     
    执行结果为:8。A        8,A 
     
    总结: 
    将结构体变量作为函数參数,是将实參值传递给形參,属于值传递。

    将结构体全部參数传递给形參使用,但本身的值不会改变。

    将指向结构体变量的指针作为实參进行传递时,是将结构体变量的地址传递给形參。属于地址传递,会改变实际结构体变量的成员值的。

  • 相关阅读:
    Mac 系统环境变量配置
    sublime3+quick3.5 完整使用教程
    httprunner 2.5.7 下.env 文件环境变量的使用及debugtalk的使用,对test的参数化及执行
    python_request的安装及模拟json的post请求及带参数的get请求
    windows 下安装Charles,破解,安装证书,设置可抓取https包
    jmeter元件的执行顺序
    jmeter的参数化实现
    jmeter工作目录介绍、jmeter元件及组件介绍
    jmeter设置成中文显示
    win10下安装jmeter
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6775297.html
Copyright © 2011-2022 走看看