赞
踩
同样作为c语言的一个重要模块,同样又是新学
为了说清楚,首先介绍数据的储存与读取:(微机)
编译系统会根据定义的变量类型分配一定的长度空间,举个例子:我们去住旅馆,首先要根据我们自己有多少人来订多大的房间即确定合适的变量类型;老板安排的xxx号房相当于地址,而房间里住的我们相当于存放的数据。住旅馆休息得通过分配的房间号进行入住即对数据的存储都是通过地址来实现。
那么,输出语句printf()
执行相当于退房过程:是通过根据变量类型与地址的对应关系,先找到地址,从它开始取出数据(常见的int
类型为2个字节,char
类型为1个字节)。
输入语句scanf()
执行相当于入住过程:把输入的数据送到某个房间(地址)开始储存单元。
储存数据又有两种方案:
定义一个变量
基类型 变量名;
首先定义一个指针变量:
基类型 * 指针变量名
即:
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·。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。