1. 初识指针
指针是什么?
指针就是用来保存地址的
获取变量地址
获取变量名使用 & 加 变量名,写作:&变量名
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 初识指针
int main()
{
// 指针就是用来保存地址的
// 声明一个整型变量
int a = 10;
// 取 a 的地址可以写成: &a
printf("%p\n", &a); // %p 用来打印地址
return 0;
}
指针的使用
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 初识指针
int main()
{
// 指针就是用来保存地址的
// 声明一个整型变量
int a = 10;
// 取 a 的地址可以写成: &a
printf("%p\n", &a); // %p 用来打印地址
// 指针变量的声明
// 前面的 int 代表我这里取的地址的类型是整型
// pa 就是 变量名
// int 和 变量名 中间的 * 代表我这个变量是一个指针变量
int* pa = &a;
// 用 * 解引用操作符, *pa 就是通过 pa 保存的这个地址去找到 a , 然后找到 a 变量对应的值
printf("%d\n", *pa); // 10;
return 0;
}
指针的变量大小
在 32位平台运行的变量大小永远是 4 字节
在 64位平台运行的变量大小永远是 8 字节
2. 初识结构体
结构体的声明
结构体的使用
用指针来访问结构体里的内容
代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 初识结构体
// 结构体的声明
// 声明一个学生类型
struct Student
{
int id; // 学生id
char name[20]; // 学生名字
double score; // 学生成绩
};
int main()
{
// 创建一个 结构体变量 并 初始化数据,初始化数据要根据 结构体 里的 数据类型 按 顺序 初始化
struct Student student001 = {
1001, "XiaoMing", 99.5 };
// 结构体变量的使用(%d:打印整型,%s:打印字符串,%lf:打印double类型)
printf("结构体变量的使用: %d %s %lf \n", student001.id, student001.name, student001.score);
// 用指针来访问结构体
struct Student* pStudent001 = &student001;
// 用解引用操作符(.)来访问结构体的子数据
printf("用指针来访问结构体(.): %d %s %lf \n", (*pStudent001).id, (*pStudent001).name, (*pStudent001).score);
// 用 -> 指向结构体的子数据
printf("用指针来访问结构体(->): %d %s %lf \n", pStudent001->id, pStudent001->name, pStudent001->score);
return 0;
}