【C语言—零基础第十一课】旋转大转盘之指针
目录
指针是什么?
在生活中我们应该玩过旋转大转盘游戏,指针指到哪个物品我就拿走哪一个物品,这个就是指针。在现实生活中你玩旋转大转盘游戏最后获奖了吗?还有一种就是我们的门牌号我们可以把它想象成为指针,只要我们和其他人说了我们的门牌号他就可以顺着门牌号找到你,而在我们C语言中也有指针。
指针定义
为了说清楚什么是指针,必须先弄清楚数据在内存中是如何存储的,又是如何存储的又是如何读取的。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。编译系统根据系统中定义的变量类型,分配一定的长度。内存区的每一个字节都有一个编号,这就是“地址”,它相当于旅馆中的门牌号。在地址所标志的内存单元中存放的数据则相当于旅馆房间中居住的旅客。
由于通过地址就能找到变量单元,可以说,地址指向该变量单元。比如一个房间的门口挂了201房间,这个就是房间的地址。或者说,201“指向”该房间。因此,将地址形象化成为“指针”。通过它就能找到以它为地址的内存单元。
指针即地址,变量的指针就是变量的地址。
指针的定义
定义指针变量的一般形式为:基地址*指针变量
*为指针说明符号
int *p;
指针的赋值
1.通过取地址运算符:&
int a,*b; b=&a;
2.通过另一个地址
int a,*q,*p; q=&a; p=q;
3.空指针的定义
int *p=NULL;
说明
1. NULL表示空,其值为0
2. 空指针定义后不能引用
指针的操作
&:取地址运算符 只能对内容取地址
*:取内容运算符 只能对地址取内容
#include<stdio.h> int main(){ int a=5,b,*p; p=&a; b=*p; printf("%d\n",b); }
结果:5
指针的引用
输入两个值进行其值交换后输出
int a,b,*p,*q; q=&a; p=&b; scanf("%d%d",q,p); printf("%d,%d\n",a,b);//5,5 printf("%d,%d\n",*q,*p);//5,5 *q=3; *p=2; printf("%d,%d\n",a,b);//3,2
函数之间的地址传递
#include<stdio.h> void fun(int *q,int *p){ *q+=*p; *p+=*q; } int main(){ int a=5,b=2; fun(&a,&b); printf("%d,%d\n",a,b);//3,2 }