C++经典指针习题.doc

上传人:一*** 文档编号:573415 上传时间:2018-10-30 格式:DOC 页数:14 大小:70.50KB
返回 下载 相关 举报
C++经典指针习题.doc_第1页
第1页 / 共14页
C++经典指针习题.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《C++经典指针习题.doc》由会员分享,可在线阅读,更多相关《C++经典指针习题.doc(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、.指针本章重要知识点:1. 一个变量的地址称为该变量的指针。指针变量定义的一般形式为:类型标识符 *变量名int *i_point;2. * 在定义语句中只表示变量的类型是指针,没有任何计算意义。* 在语句中表示 “指向”。 p=100; 4. +, - -, * 优先级相同,都是 右结合性 。int a=3, *p; p=(1)(*p)+; 相当于 a+。表达式为 3, a=4(2)*p+; *(p+)首先*p ,然后 p=p+1,指针指向下一个 int 单元 表达式为3, (3)+*p +(*p) *p=*p+1 a=4(4)*+p *(+p),首先:p=p+1, 然后取*p。即取 p 所

2、指的下一个 int 单元的内容。5. 指针变量作为函数参数(1)函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。(2)指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体值,而指针作函数参数传递的是内存的地址。.(3)用指针变量作函数参数,在被调函数的执行过程中,应使指针变量所指向的参数值发生变化,这样,函数在调用结束后,其变化值才能保留回主调函数。(4)函数调用不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。(5)用指针变量作函数参数,可以得到多个变化了的值。注意:如果函数的形参是指针类型,那么实参传递过去的一定是地址(二级上机改错

3、题必考类型)6. 数组的指针和指向数组的指针变量数组名就是数组的起始地址;又规定:数组的指针就是数组的起始地址。数组元素的指针就是数组元素的地址。(1)指向数组元素的指针变量的定义与赋值int a10, *p; p=a; (2) p+1 指向数组的下一个元素,而不是下一个字节7. 数组名作函数参数(重点,难点 )(1) 数组名可以作函数的实参和形参,传递的是数组的地址。这样,实参、形参共同指向同一段内存单元,内存单元中的数据发生变化,这种变化会反应到主调函数内。(2) 在函数调用时,形参数组并没有另外开辟新的存储单元,而是以实参数组的首地址作为形参数组的首地址。这样形参数组的元素值发生了变化也

4、就使实参数组的元素值发生了变化。8. 指向二维数组的指针和指针变量.int a34; (1) a 为二维数组名, a+1 为 a1的地址,也就是数组第一行的地址,所以 a 为 行指针 。a 为行指针,加 1 移动一行。(2) a1为一维数组名,a1+1 为 a11的地址,也就是数组第一行第一列的地址, 所以 a1为 列指针 。(3) *a 或 a0为列指针,加 1 移动一列(4) a, a+0 , *(a+0), a0, 注意,p 为行指针,可以直接将二维数组名 a 赋给 p。这样,a 与 p 等同。如有 anm,可以令 p=a;10. 字符串的指针和指向字符串的指针变量(1) char st

5、ring =“I love China”;(合法,string 为数组名,代表数组的首地址,是常量。)(2) char string20;string=“I love China“;(非法表示,常量不能赋值)正确的写法:strcpy(string, “I love China“);(3) 用字符指针表示字符串char *string=“I love China”;(合法,将内存中字符串常量的首地址赋给一个指针变量)另一种写法:char *string; string=“I love China”;(指针变量赋值,合法).第 3 种写法:char *string; gets(string);(非

6、法,指针未赋值就作指向运算)11. 函数的指针和指向函数的指针变量(1)函数在编译时被分配给一个入口地址。这个入口地址就称为函数的地址,也是函数的指针。像数组一样,C 语言规定,函数名就代表函数的入口地址(2) 专门存放函数地址的指针变量称为指向函数的指针变量函数类型 (*指针变量名 )(参数类型 );int (*p)( int, int);int max (int x, int y) return xy?x:y; p=max;( 这时,指针变量 p 中放的是 max 函数在内存中的入口地址。 )12. 返回指针值的函数(1) 被调函数返回的不是一个数据,而是一个地址。所以函数的类型为指针类型

7、。类型标识符 *函数名( 参数表)13. 指针数组和指向指针的指针(1) 指针数组中的每一个元素都是指针变量,可以放地址。类型标识 *数组名数组长度说明 int *p4; p 为数组名,内有四个元素,每个元素可以放一个 int 型数据的地址 (2) 指向指针的指针变量(或称为二级指针)int i,*p; p=.同样,p 也有地址,可以再引用一个指针变量指向它。prt= 称 prt 为指向指针的指针变量。其基类型是指向整型数据的指针变量,而非整型数据。总结:(1) 指针变量可以有空值,即指针变量不指向任何地址p=NULL(2) 两指针可以相减,不可相加。若要进行相减运算,则两指针必须指向同一数组

8、,相减结果为相距的数组元素个数(3) 指向同一数组的两个指针变量可以比较大小(4) 通过行指针引用二维数组元素( 本章的难点,重点 )int a34, *p3, (*pp)4, *prt;for(i=0;i#includemain() char str 20=“One*World”, “One*Dream!”,*p=str1;coutcC)c=getchar();D)*c=”string”;(7)有以下程序main() char *s=“ABC“;do coutint fun(int n) int *p;p=(int*)malloc(sizeof(int);*p=n; return *p;ma

9、in(). int a;a = fun(10); coutm) m=sik;return m;main() int a44=1,2,3,4),11,12,13,14,2l,22,23,24,31,32,33,34;cout fun(a,4,0);程序的运行结果是( )。A)4 B)34 C ) 31 D)32(19)以下程序的输出结果是_ 。main() int j, a=1,3,5,7,9,11,13,15,*p=a+5;for(j=3; j; j-) switch(j) case 1:case 2: cout*p+; break;case 3: cout*(-p);(20)以下程序的输出结果是 _ 。#define N 5int fun(int *s, int a, int n) int j;*s=a; j=n;while(a!=sj)j-;return j;main() int sN+1; int k;for(k=l; k=N; k+) sk=k+l;coutfun(s,4,N);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com