您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 指针综合练习题(带答案).
指针综合练习题一、选择题1.若有以下定义,则对a数组元素的正确引用是____d_____.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2)2.若有定义:inta[2][3],则对a数组的第i行j列元素地址的正确引用为__d____.a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j3.若有以下定义,则p+5表示___a____.inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值4.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是____b____.a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*(*p2);5.若有说明语句chara[]=Itismine;char*p=Itismine;则以下不正确的叙述是___d_____.a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符二、填空题1指针变量保存了另一变量的(1)值,不可以任意给指针变量赋一个地址值,只能赋给它(2)和(3)的地址。使用变量名来访问变量,是按(4)来直接存取变量称为(5)方式;而借助指针变量取得另一变量的地址,访问该变量称为(6)方式。答案:(1)地址(2)NULL(3)已经分配了内存的变量的地址(4)按变量的地址(5)直接访问(6)间接访问2以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。voidmain(){int*a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;cou输入3个整数:;cinabc;cout*a*b*c;num=*a;if(*a*b)__num=*b____;if(num*c)_num=*c_____;cout输出最小整数:numendl;}3下面程序段的运行结果是___ef_____.charstr[]=abc\0def\0ghi,*p=str;coutp+5;4若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是__4____.*(a+5)的值是___12______.5若有以下定义:inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8___.*(*(a+1)+0))的值是____8____.6以下程序将数组a中的数据按逆序存放,请填空。#defineM8//定义宏M代表了8voidmain(){inta[M],i,j,t;for(i=0;iM;i++)cina[i];i=0;j=M-1;while(ij){t=*(a+i);_*(a+i)=*(a+j)_______;*(_a+j______)=t;i++;j--;}for(i=0;iM;i++)cout*(a+i);}三、简答题1指针变量与整型量的加减运算代表什么意义?答:指针变量与整型量的加减表示移动指针,以指向当前目标前面或后面的若干个位置的目标。指针与整型量i的加减等于指针值(地址)与i*sizeof(目标类型)积的加减,得出新的地址。2设a为数组名,那么a++是否合法?为什么?答:非法。因为a是指针常量。3有如下定义:intival=60021;int*ip;double*dp;下面哪些赋值非法或可能带来错误,并加以讨论。ival=*ip;ival=ip;*ip=ival;ip=ival;*ip=&ival;ip=&ival;dp=ip;dp=*ip;*dp=*ip;解:ival=*ip;错,未确定指针ip初值,用随机内存地址中的数据给ival赋值是危险的。但语法对。ival=ip;错,赋值类型错,指针型不能赋给整型。*ip=ival;错,未确定指针ip初值,用ival给随机内存赋值是危险的。但语法对。ip=ival;错,赋值类型错,整型不能赋给指针型。*ip=&ival;错,赋值类型错,地址(指针型)不能赋给整型。ip=&ival;对,地址赋给指针型。dp=ip;错,整型指针不能赋给双精度指针。dp=*ip;错,赋值类型错,整型不能赋给指针型。*dp=*ip;对,赋值类型转换四、编程题要求用指针的方法完成:输入一串英文文字,统计其中字母(不区分大小写)的数目。
本文标题:指针综合练习题(带答案).
链接地址:https://www.777doc.com/doc-5807963 .html