- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言编程 授课教师:王占骜 第6章 指针 6.1 概念6.1.1 指针常量 操作系统为内存以字节为单位用十六进制整数进行连续编号,这些编号称作地址。 指针常量是计算机内部的一系列地址,只能使用不能改变。 6.1.2 取地址运算 使用取地址运算符()可以获得变量的内存地址(指针常量)。 如: int x; x 使用%p可以输出地址。 如:int x; printf(“Location of x is %p\n”,x); 6.1.3 指针变量 用来存储地址的变量叫指针变量,简称指针。 说明 (1)指针是变量,一般占4个字节的内存空间。 (2)指针也有自己的地址,要获得指针变量的地址同样也可以使用取地址运算()。 (3)若把一个变量的地址赋给指针,就说指针指向了该变量。 6.2 指针与变量6.2.1 定义指针变量 数据类型 *指针名1, *指针名2, …; 如: int *p1, *p2; char *pc1, *pc2; 指针的数据类型是指针所指向数据的类型。 6.2.2 指针的初始化 1. 定义指针的同时初始化 如: int a; int *p=a; 2. 先定义指针后初始化 如: int x=-123; int *p,*q; p=a; q=p; 说明 (1)可以把一个指针初始化为NULL或0值,称为空指针。 如:float *pf=NULL; char *p=0; (2)指针的类型必须与其指向变量的类型一致。 如:float x=-1.5; int *p=x; (×) 说明 (3)先定义后初始化时,指针前面不能加*。 如:int a=123; int *p; p=a; (4)不可以把整数直接付给指针,也不可以把指针直接赋给变量。 如:int a; int *p=1000; (×) a=p; (×) 6.2.2 用指针处理变量 可以使用间接运算*操作指向的数据。 格式 *地址表达式 如: int x=12; int *p=x; *p = *p +1; /* 等价 x=x+1;*/ 说明 (1)间接运算*对象之能是地址。 如:int a; int *p=a; *p=8; *a=100; 说明 (2)取地址运算和间接运算*互为逆运算。 如:int x=1; int *p=x; *p == x == *x p == x == *p 说明 (3)可以定义空类型的指针。空类型指针可以指向任意类型的数据,但不可以对空类型指针进行间接运算。 如:void *pv; int a; int *pa=a; pv=pa; 例:若有定义:int x=0,*p=x;则语句printf(“%d\n”,*p);输出结果是( )。 [2005.9] A. 随机值 B. 0 C. x的地址 D. p的地址 答案:B 例:设已有定义:float x;,则以下对指针变量p进行定义并且赋值的语句中正确的是( )。 [2007.4] A. float *p=1024; B. int *p=(float x); C. float p=x; D. float *p=x; 答案:D 例:若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是( )。 [2006.4] A. *p=a; scanf(%lf,p); B. *p=a; scanf(%f,p); C. p=a; scanf(%lf,*p); D. p=a; scanf(%lf,p); 答案:D 例:设有定义:int n1=0,n2,*p=n2,*q=n1;,以下赋值语
文档评论(0)