指针相关符号(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; }