- 1、本文档共112页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]第7章c指针
目录第7章 指 针 7.1 指针的概念7.2 指针变量的定义7.3 指针的运算 7.4 指向数组的指针的指针 7.5 字符串的指针 7.6 函数与指针7.7 指针数组和二维数组的行指针7.8 指向指针的指针7.9 有关指针的数据类型和指针运算的小结7.10 与指针有关的c程序典型举例本 章 小 结习题7;第7章 指 针;7.1 指针的概念;图7.1 变量的分配地址;执行这两条语句后,将整数2存放在分配给变量a 所对应的存储单元FF02H、FF03H两个字节中,将整数4存放在分配给变量b的存储单元FF04H、FF05H两个字节中。这种按变量名来访问变量所对应的存储空间而存取变量值的方式称为“直接访问”方式。;在C语言中,对变量的存储单元还可以用另外一种方式进行访问。
假设定义了一个变量pa,被分配的内存单元为FFF0H、FFF1H两个字节,但在变量pa的内存单元存放的是分配给变量a的地址值(如图7.1)。在C语言中可通过语句:
pa=a;
将变量a的地址赋给变量pa。这时,pa变量的值就是FF02H,即变量a所占用存储单元的起始地址。
当要存取变量a时,可以通过变量pa来间接访问,即先访问(直接访问)变量pa的值(变量a的地址),根据该地址值FF02H,再找到存储单元FF02H、FF03H两个字节取出int型变量a的值。这样变量pa和变量a之间建立起一种联系,通过pa能知道a的地址,从而找到分配给a的存储单元,对a进行存取。这就是对变量a的间接访问。
若变量pa的存储单元中存放的是分配给变量a的地址,通常可以说变量pa“指向”变量a。在图7.1中以箭头表示这种“指向”关系。在C语言中用“*”运算符表示对所“指向”目标的访问,这里,*pa表示一个变量,即pa所指向的目标——变量a。因此,
a=2;
*pa=2;
两个语句作用相同。只是前一语句表示对变量a的直接访问,而后一语句表示对变量a的间接访问(通过变量pa)。
这样,在C语言中,除了前面介绍的简单变量之外,还可以在程序中使用一种特殊的变量,即指针变量,如变量pa。指针变量和简单变量一样占用一定的存储空间。但是,它与简单变量不同之处在于,指针变量的存储空间中存放的不是普通的数据,而是地址。;7.2 指针变量的定义
1. 指针变量的定义
与简单变量一样,指针变量也必须先定义后使用。
定义指针变量的一般形式为:
数据类型 *指针变量名;;例如:
int *ip; (ip是指向整型变量的指针变量)
char *name; (name 是指向字符型变量的指针变量)
定义了名字为ip、name的两个指向不同类型数据的指针变量。
定义指针变量名时前面的“*”,表示该变量的类型为指针型变量。例如,定义中的指针变量是ip和name,而不是*ip和*name。
指针变量定义时所指定的数据类型不是指针变量本身的数据类型,因为指针变量中存放的内容是地址。值得注意的是,计算机硬件不同,地址的数据长度不同。因此,指针变量本身的数据长度是由编译系统决定的,它与计算机的地址字长相适应。指针变量定义时指定的数据类型是指针变量所指向目标变量的数据类型。例如,上面定义中的指针变量ip所指向的地址单元是一个可以用来存放一个int型数据的地址,name 所指向的地址单元是一个可以用来存放一个char型数据的地址。
具有相同数据类型的指针变量可以同时定义,也可以和简单变量一起定义。例如:
int a,b, *pa, *pb;
都是合法的定义。;2. 指针变量的初始化
指针变量在定义的同时,也可以被赋予初值,称为指针变量的初始化。由于指针变量是存放地址的变量,所以初始化时赋予的初值必须是地址。
指针变量的初始化的一般形式为:
数据类型 *指针变量名=初始地址值;
例如:
int a, *pa=a;
在定义指针变量pa的同时,把变量a的地址作为初始值来初始化pa。
应注意,初始化中的*pa=a不是一个运算表达式,而是一个说明语句。在这里是将变量a的地址值赋给指针变量pa,而不是*pa。
它等价于:
int a, *pa;
pa=a;;3. 与指针有关的两个运算符
在C语言中,有两个与指针有关的运算符。
:称为地址运算符,其功能是返回操作对象的地址;
*:称为指针运算符,其功能是返回操作数(指针变量)所指向的目标对象的值。 ;图7.2 和*运算的意义符;在程序中定义了两个变量a和pa,假设编译时系统分配的内存空间首地址分别为FF00H和FF02H(如图7.2)。其中变量a是int型的简单变量,并赋初值为3。变量pa是指针变量,可以用来存放一个int型数据的地址。
然后,将变量a的
您可能关注的文档
最近下载
- 补签借款合同范本8篇.docx VIP
- 部队车辆保养注意事项 .pdf VIP
- 2024-2025学年台州市临海市八年级下期末数学模拟试卷附答案解析.pdf
- 《百年追梦,复兴中华》大单元教学思路与设计.docx
- 2024年水利工程高级工程师专业知识考试题库(含AB卷).pdf VIP
- 译林版八年级上册英语词汇表.pdf VIP
- AI驱动的知识图谱:混合式教学模式创新研究.docx VIP
- 初中语文必背古诗文:部编版7-9年级语文必背古诗文132篇(电子打印版).pdf VIP
- KEYENCE基恩士SZ-V 系列 用户手册.pdf
- Unit 1 Helping at Home单元基础巩固练习题2025人教版英语四年级上册.pdf VIP
文档评论(0)