Loading... ## 指针是什么 指针就是地址 我们都知道计算机的内存。计算机中所有程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,为了更好的访问内存单元,就给内存单元进行了编号,这里 “编号” 就称为 地址 ## 指针变量 * 有变量就会有空间、变量名、变量内容,那么变量的地址如何储存我们就需要指针变量,指针变量也是普通变量,但是它里面存放的内容时变量的地址。 ## 指针的变量及其初始化 1. &a: 取地址符(单目运算符):在此时,&的含义是去变量a的地址 ```c has-numbering scanf("%d",&a) ``` 2. int *p=&a;这是定义一个指针变量 这时候int *p定义了一个指向int类型指针p, ```c has-numbering int main() { int a = 10; int*p = &a; printf("%d\n", a); printf("%p\n", &a); printf("%p\n", p); system("pause"); return 0; } ``` 运行结果为: ```c has-numbering 10 00D8FDCC 00D8FDCC ``` 我们可看到&a表示的是a 的地址,指针变量p表示也是a的地址 3. *p :解引用 :它所指的值是指针指向变量的值,并不是地址。 ```c has-numbering int main() { int a = 10; int*p = &a; printf("%d\n", a); printf("%p\n", &a); printf("%p\n", p); printf("%d\n", *p); system("pause"); return 0; } ``` 运行结果为: ```c has-numbering 10//------->对应的a的值 00EFFA74//-------->对应的是a的地址 00EFFA74//--------->对应的是a的地址 10//-------->对应的a变量的内容 ``` * 多次解引用 ```c has-numbering int main() { int a = 10; int*p = &a; int* q = p; printf("p = %p\n", p); printf("*p = %d\n", *p); printf("q = %p\n", q); printf("*q = %d\n", *q); system("pause"); return 0; } ``` 运行结果 ```c has-numbering p = 008FFCA0 *p = 10 q = 008FFCA0 *q = 10 请按任意键继续. . . ``` 需要注意的是 int*p = a 中 p所指的是变量a的地址;*p 所指的是变量a的内容。 最后修改:2020 年 11 月 07 日 © 来自互联网 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏