- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计基础(C语言)wh 第 七 章 指 针 本章内容 7.1 指针的概念 7.2 指针变量作为函数参数 7.3 指针与一维数组 7.4 指针与多维数组 7.5 指针数组和多级指针 7.6 指针与函数 7.7 命令行参数 小 结 7.1 指针的概念 7.1.1 地址与指针 一般把存储器中的一个字节称为一个内存单元,为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元,这个编号就叫做存储单元的地址。 在C程序中定义一个变量,系统会根据要求给这个变量分配存储单元,分配时会根据变量类型的不同决定分配内存空间的大小。变量通常有3个特征:名字、地址和内容(值)。 变量的地址表示为:变量名 是取地址运算符,操作数是变量名。 该表达式的值为操作数变量的地址。 指针变量:存放地址的变量 例: int i=10 ; char c=‘a’; int *p; p=i; 变量p被定义成一个指针变量,语句“ p=i;”将变量i的地址(1000)存放到变量p中,称“p指向变量i”或“p是变量i的指针”,被指向的变量i称为p所指向的对象。 单目运算符*是的逆运算,称为间接访问运算符。 使用形式为:*地址表达式 *运算的操作数是地址表达式,运算的结果是以地址表达式的取值为指针所指向的对象。 例如,若pc是指向字符变量c的指针,则*(c)和*pc表示同一字符对象c。因而赋值语句: *(c)=a; *pc=a; c=a; 效果是一样的,都是将a赋给变量c。 7.1.2 指针变量的定义和引用 1. 指针变量的定义 一般形式为:类型说明符 *变量名; 说明:*此时不是间接访问运算符,它表示定义的是指针变量;变量名即为定义的指针变量名;类型说明符表示本指针变量所指向的变量的数据类型。 例如:int *p1; /*p1是指向整型变量的指针变量*/ char *p2; /*p2是指向字符型变量的指针变量*/ float *p3; /*p3是指向单精度浮点型变量的指针变量*/ 注意:一般情况下,一旦指针变量的数据类型被确定后,其只能指向同一类型的数据对象。 2. 指针变量的初始化 指针变量定义后,变量值不确定,使用前必须先赋值。可以对其进行初始化。 可以把指针初始化为0、NULL或某个地址,作为初值的地址表达式必须是与指针所指向的对象同类型的变量的地址。 3. 指针变量的引用 指针变量本身存放的是它指向对象的地址,程序中必须明确使用的是指针变量本身还是指针变量所指向的对象; 必须给指针变量赋值,使指针指向一个明确的对象后,才能使用指针指向的对象。 例如: int i=10, j, *p=i ; j=*p; 等价于 j = i ; (*p)++; 等价于 i++ ; *p=j; 等价于 i = j ; printf( %d,*p); 等价于 printf( %d,i); scanf( %d,p); 等价于 scanf( %d,i); 注意:通过指针p对变量i输入数据时,由于p=i,p已经是i的地址了,所以不要写成p。 【例7-1】输入a和b两个整数,按先大后小的顺序输出a和b。 #include stdio.h void main(void) { int a,b,*pa=a,*pb=b,*p; scanf(%d%d,a,b); if(ab) { p=pa; pa=pb; pb=p; } /* 交换指针变量pa和pb的指向 */ printf(a=%d,b=%d\n,a,b); printf(max=%d,min=%d\n,*pa,*pb); } 7.1.3 指针变量的运算 1. 赋值运算 指针赋值应遵循以下规则: (1) 任何指针可以直接赋予同类型的指针变量或地址表达式; (2) 不同类型的指针变量赋值时,必须使用强制类型转换(不服从基本类型赋值时的自动类型转换规则)。 (3) 任何类型的指针都可以赋给void指针(void *类型的指针)。void指针和NULL指针可以直接赋给任何类型的指针变
您可能关注的文档
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第1章 概述.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第2章 窗体.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第3章 基本控件.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第4章 Visual Basic程序设计基础.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第5章 基本控制语句.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第6章 程序设计基本算法.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第7章 高级数据类型.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第8章 过程.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第9章 文件.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第10章 高级控件.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽 1第8章_结构体.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽 1第9章 预处理和标准函数.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽 1第10章_文件.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽 1第11章 数据结构和数据抽象.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第2章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第3章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第4章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第5章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第6章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第8章.doc
文档评论(0)