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

      

    就像数组一样,指向结构体的指针存储了结构体第一个元素的内存地址。与数组指针一样,结构体的指针必须声明和结构体类型保持一致,或者声明为void类型。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct person {
      int age;
      char *name;
    };
    struct person first;
    struct person *ptr;
     
    first.age = 21;
    char *fullname = "full name";
    first.name = fullname;
    ptr = &first;
     
    printf("age=%d, name=%s ", first.age, ptr->name);

    第1至6行声明了一个person结构体,一个变量指向了一个person结构体和指向person结构体的指针。第8行为age成员赋了一个int值。第9至10行我们声明了一个char指针并赋值给一个char数组并赋值给结构体name成员。第11行我们把一个person结构体引用赋值给结构体变量。

    第13行我们打印了结构体实例的age和name。这里需要注意两个不同的符号,’.’ 和 ‘->’ 。结构体实例可以通过使用 ‘.’ 符号访问age变量。对于结构体实例的指针,我们可以通过 ‘->’ 符号访问name变量。也可以同样通过(*ptr).name来访问name变量。

    指针和结构类型的关系 
    可以声明一个指向结构类型对象的指针。 
      例十一: 
    structMyStruct 

     inta; 
     intb; 
     intc; 

    MyStructss={20,30,40};
    //声明了结构对象ss,并把ss的三个成员初始化为20,30和40。 
    MyStruct*ptr=&ss;
    //声明了一个指向结构对象ss的指针。它的类型是MyStruct*,它指向的类型是MyStruct。 
    int*pstr=(int*)&ss;
    //声明了一个指向结构对象ss的指针。但是它的类型和它指向的类型和ptr是不同的。
      请问怎样通过指针ptr来访问ss的三个成员变量? 
      答案: 
    ptr->a; 
    ptr->b; 
    ptr->c; 

  • 相关阅读:
    CodeForces 1332D Walk on Matrix
    CodeForces 1324F Maximum White Subtree
    CodeForces-1324E-Sleeping-Schedule
    CodeForces-1324D-Pair-of-Topics
    理解字节序 大端字节序和小端字节序
    公钥 私钥 数字证书概念理解
    简要介绍 X Window System (又称为X11 or X)
    动态规划的简洁说明
    二分法的研究
    两个变量的内容交换
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3402237.html
Copyright © 2011-2022 走看看