指针相关符号(20240309.w2)

星号*

  • 声明指针变量:在声明变量时,出现在数据类型 和 变量名之间
    int a = 0;     // 声明整型变量 a,并初始化为 0
    int *pa = &a;  // 声明指针变量 pa, 指向整型变量 a, 通过&获取 a 的地址
    
  • 间接寻址运算符:*

    int a = 0;     // 声明整型变量 a,并初始化为 0
    int *pa = &a;  // 声明指针变量 pa, 指向整型变量 a
    
    int b = 10;
    b = *pa;    // 通过间接寻址访问指针变量pa, pa 指向 a
    

    取地址运算符&

    int a = 0;     // 声明整型变量 a,并初始化为 0
    int *pa = &a;  // 声明指针变量 pa, 指向整型变量 a
    
    int b = 10;
    b = *a;    // 通过间接寻址访问整型变量 a
    
    pa = &b;      // 指针变量 pa 指向 整型变量 b,通过&获取 b 的地址
    

    结构数据类型

  • 句点:., 常在结构变量,访问成员, 格式:结构变量名.成员变量名
  • 右剪头符:-> , 常用在结构指针变量,访问结构成员,格式:结构指正变量名->成员变量名

    struct Student {      // 定义一个学生结构类型
      int id;             // 身份ID
      char name[20];      // 姓名
      char gender;        // 性别:M - 男性male, F - 女性Female
      float score;        // 成绩
    };
    
    struct Student s1 = {1, "hsy", 95.5};
    struct ps1 = &s1;
    
    printf("s1: id = %d, name = %s, gender = %c, score = %f\n", 
      s1.id, s1.name, s1.gender, s1.score); // 通过指示符访问成员
    
    printf("s1: id = %d, name = %s, gender = %c, score = %f\n", 
      ps1->id, ps1->name, ps1->gender, ps1->score); /* 通过右箭头符访问成员  */
    
    printf("s1: id = %d, name = %s, gender = %c, score = %f\n", 
      (*ps1).id, (*ps1).name, (*ps1).gender, (*ps1).score); /* 通过 * . 访问成员  */
    

    练习程序

    vars.c

    #include <stdio.h>
    
    int main(void) {
    int a = 0;     // 声明整型变量 a,并初始化为 0
    int *pa = &a;  // 声明指针变量 pa, 指向整型变量 a
    
    int b = 10;
    b = *a;    // 通过间接寻址访问整型变量 a
    
    struct Student {      // 定义一个学生结构类型
      int id;             // 身份ID
      char name[20];      // 姓名
      char gender;        // 性别:M - 男性male, F - 女性Female
      float score;        // 成绩
    };
    
    struct Student s1 = {1, "hsy", 'M', 95.5};
    struct Student *ps1 = &s1;
    
    printf("s1: id = %d, name = %s, gender = %c, score = %f\n", 
      s1.id, s1.name, s1.gender, s1.score); // 通过指示符访问成员
    
    printf("s1: id = %d, name = %s, gender = %c, score = %f\n", 
      ps1->id, ps1->name, ps1->gender, ps1->score); /* 通过右箭头符访问成员  */
    
    printf("s1: id = %d, name = %s, gender = %c, score = %f\n", 
      (*ps1).id, (*ps1).name, (*ps1).gender, (*ps1).score); /* 通过 * . 访问成员  */
    
    return 0;
    }
    

results matching ""

    No results matching ""