引入
内存如何存放变量
内存中不存放变量
,存放的是一堆十六位进制的地址值
,编译器就会把这些地址值与相应变量对应起来。
指针
通常所说的指针
,就是地址的意思
,C语言中有专门存放指针的变量类型
— 指针变量
.
- 跟普通变量不同,指针变量存放的是地址值,所以一个地址是占 4 个字节的空间
- 指针变量的类型是
所存变量的类型
定义指针变量
定义指针变量跟普通变量十分相似,只是中间多了一个星号(
*
)
// 不推荐定义 未初始化的指针变量,不然可能产生意想不到的 Bug。(未定义就会随机分配地址,这很危险) // 使用指针变量一定要初始化 char *pc; int *pi;
取地址运算符和取值运算符
如需要
获取某个变量的地址
,就需要使用取地址运算
(&)
- 这里(*) 表示
定义
指针变量
char c = 'A'; // 取地址值赋值给指针变量 char *pc = &c;
如果需要
访问指针变量指向的数据
,可以使用取值运算符(*)
- 这里(*) 表示
获取
指针变量指向的值。
// 打印出的 原本的值 printf("i = %d \n", *pi); // %p 打印指针变量的地址值 printf("*pi = %p \n", *pi);
代码
#include <stdio.h> int main() { // 定义变量 char c = 'A'; int i = 123; // 获取地址赋值给指针变量 char *pc = &c; int *pi = &i; // 打印 原本变量 printf("c = %c \n", *pc); printf("i = %d \n", *pi); // 打印地址值 printf("*pc = %p \n ", &pc); printf("*pi = %p \n", &pi); return 0; }