概述
同样作为c语言的一个重要模块,同样又是新学
为了说清楚,首先介绍数据的储存与读取:(微机)
那么数据在内存中是如何储存与读取的
编译系统会根据定义的变量类型分配一定的长度空间,举个例子:我们去住旅馆,首先要根据我们自己有多少人来订多大的房间即确定合适的变量类型;老板安排的xxx号房相当于地址,而房间里住的我们相当于存放的数据。住旅馆休息得通过分配的房间号进行入住即对数据的存储都是通过地址来实现。
那么,输出语句printf()
执行相当于退房过程:是通过根据变量类型与地址的对应关系,先找到地址,从它开始取出数据(常见的int
类型为2个字节,char
类型为1个字节)。
输入语句scanf()
执行相当于入住过程:把输入的数据送到某个房间(地址)开始储存单元。
储存数据又有两种方案:
- 按地址来直接存储数据:指定某地址(214)存储整型数据(3),直接储存。即用214的钥匙直接开锁入住
- 同样是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·。
最后
以上就是自觉树叶为你收集整理的C语言之指针总结的全部内容,希望文章能够帮你解决C语言之指针总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复