C语言之指针总结

同样作为c语言的一个重要模块,同样又是新学


为了说清楚,首先介绍数据的储存与读取:(微机)

那么数据在内存中是如何储存与读取的

编译系统会根据定义的变量类型分配一定的长度空间,举个例子:我们去住旅馆,首先要根据我们自己有多少人来订多大的房间即确定合适的变量类型;老板安排的xxx号房相当于地址,而房间里住的我们相当于存放的数据。住旅馆休息得通过分配的房间号进行入住即对数据的存储都是通过地址来实现。


那么,输出语句printf()执行相当于退房过程:是通过根据变量类型与地址的对应关系,先找到地址,从它开始取出数据(常见的int 类型为2个字节,char类型为1个字节)。
输入语句scanf()执行相当于入住过程:把输入的数据送到某个房间(地址)开始储存单元。


储存数据又有两种方案:

  1. 按地址来直接存储数据:指定某地址(214)存储整型数据(3),直接储存。即用214的钥匙直接开锁入住
  2. 同样是1的情况,但是你忘记拿钥匙,但215有214寝室的人在串门,那你就得先去一趟215取到214的钥匙才能开门,即用地址215储存你214的钥匙,再打开214储存数据3.
    一个变量数据的地址叫做指针,专门用一个变量存储另一个变量的地址,这个变量成为指针变量,那么指针变量与他所指向的变量之间如何表示?

“*”

定义一个变量
基类型 变量名;
首先定义一个指针变量:
基类型 * 指针变量名
即:

int a; 
int * point ;
 point=&a;

数组与指针:
定义数组,定义指针变量。即把数组首元素的地址交给指针表变量。
利用指针引用数组元素:

int *p;int a[10],p=&a[0];

指针变量p+1指向的是数组中的下一个元素,但它的地址加的应该是相应的字节
这里注意指针变量的运算:
(1)p++相当于p指向下一个元素,即a[1]。
(2) * p++,即a[0],再将p指向下一个元素。
(3) * (p++)与 * (++p)不同,前者先取p对应的值,再使p+1。地址改变而++(*p)改变的是p所对应的值+1·。


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值