- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计2第十一章指针
第11章 指针;11.1 指针的基本概念
11.2 指针变量的运算
11.3 数组指针变量的说明和使用
11.4 字符串指针变量的说明和使用
11.5 函数指针变量
11.6 指针型函数;11.1 指针的基本概念;11.1.2 指针变量的类型说明
对指针变量的类型说明包括三个内容:
指针类型说明,即定义变量为一个指针变量;
指针变量名;
变量值(指针)所指向的变量的数据类型;
其一般形式为:
类型说明符 *变量名;
其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。; 例如:
int *p;
表示p是一个指针变量,它的值是某个整型变量的地址。或者说p指向一个整型变量。至于p究竟指向哪一个整型变量,应由向 p赋予的地址来决定。再如:
static int *p; /* p是指向静态整型变量的指针变量 */
float *p; /* p是指向浮点变量的指针变量 */
char *p; /* p是指向字符变量的指针变量 */
指针变量本身一定是整数(就像房间号一样),类型差别只是所指地址中存放的数据的差别。
指针应具有“始终如一”的特点,也就是说,一个指针变量只能指向同类型的变量,不能时而指向一个浮点变量,时而又指向一个字符变量。这就好比商品的标签一样,贴计算机的标签不能贴在化妆品。
;11.1.3 指针变量的赋值
指针变量也是变量,所以与普通变量同样,必须在使用前赋值。未经赋值的指针变量不能使用。当然,指针变量的赋值只能赋予地址,而不能赋予其它数据。因为变量的地址是由编译系统分配的,所以用户不知道变量的具体地址。因此,通过与变量之间的关系来确定它的值。引入地址运算来表示变量的地址。其一般形式为:
变量名;
如a变示变量a的地址,b表示变量b的地址。变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p可以有以下两种方式:
(1) 指针变量初始化的方法
int a;
int *p=a;; (2) 赋值语句的方法
int a;
int *p;
p=a; /* 不能写为*p=a */
不允许直接把一个数赋予指针变量,作为变量的值。下面的赋值是错误的:
int *p;
p=23;
在赋值语句中,被赋值的指针变量前不能再加“*”说明符,如写为*p=a也是错误的。
;11.2 指针变量的运算;2 取内容运算符*
用于表示指针所指的变量。*是单目运算符,其结合性为自右至左。如*p1,*p2。
在*运算符之后跟的变量必须是指针变量。
注意,指针运算符*和指针变量说明中的指针说明符*的意义并不相同。在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指变量的内容。
【例11-1】(见课本)
;11.2.2 指针变量的运算
1 赋值运算
指针变量的赋值运算有以下几种形式。
(1) 指针变量初始化赋值
参见上页。
(2) 传递地址
把一个变量的地址赋予指向相同数据类型的指针变量。例如:
int a,*pa;
pa=a; /*把整型变量a的地址赋予整型指针变量pa*/
; (3) 传递指针
把一个指针变量的值赋予指向相同类型变量的另一个指针变量。如:
int a,*pa=a,*pb;
pb=pa; /*把a的地址赋予指针变量pb*/
文档评论(0)