文章目录
- Intro
- Code
- 图示
 
Intro
C语言中有一类特殊的变量:指针变量(pointer variable),用于存储某个变量的内存地址的值。
 要打印指针变量一般用%p格式符,会打印出该指针变量的值,即一个内存值。
Code

//  Created by wuyujin1997 on 2023/1/23.
#include <stdio.h>
int main() {
    int age = 25;
    int* p = &age;
    printf("age = %d\n", age);  // 打印一个int变量的值
    printf("&age = %p\n", &age);// 该变量的内存地址。 【&变量名】取到该变所在的内存地址
    printf("p = %x\n", p);      // 打印该指针变量的值。指针变量中存的是特殊类型的值:【某个其他变量的内存地址】。
    printf("*p = %d\n", *p);    // 指针变量p中存着一个内存地址,这个内存地址处的变量的值是多少?
                                // 【*指针变量名  指针变量-->普通变量内存地址-->普通变量的值 】依次取值两次:1. 拿到指针变量中存储的值。2. 以该值为内存地址,取对应内存处的变量的
    
//    age = 25
//    &age = 0x16fdff218
//    p = 6fdff218
//    *p = 25
    
    return 0;
}
图示
想了一下,用 Excel 演示最方便,也比较直观。
 假设我用下面的电子表格表示我电脑的内存,其中每个格子就是一个内存单元(假设用每个格子表示1字节,1格子=1字节内存 byte)。

 那我的每条程序语句依次都做了什么呢?
- int age = 25;
分配了一个int型变量,占8 byte,内存的值为25,分配哪个位置的内存呢?随机(暂时认为是随机的)。
【WPS坏了,我装一个Excel有空再弄吧】
-  int* p = &age;
-  printf("age = %d\n", age);
-  printf("&age = %p\n", &age);
-  printf("p = %x\n", p);
-  printf("*p = %d\n", *p);



















