C语言指针练习题.docVIP

  • 24
  • 0
  • 约1.64万字
  • 约 30页
  • 2017-01-06 发布于贵州
  • 举报
C语言指针练习题C语言指针练习题

一、知识点 1.? 掌握指针、地址、指针类型、空指针(NULL)等概念; 2.? 掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算、指针变量比较运算和指针表达式; 3.? 掌握指针与数组、函数、字符串等的联系; 4.? 掌握动态空间操作(new,delete); 5.? 掌握引用参数的使用。 二、例题分析与解答 例题1:若有以下定义,则说法错误的是( )。 int a=100,*p=a ; A.声明变量p,其中*表示p是一个指针变量 B.变量p经初始化,获得变量a的地址 C.变量p只可以指向一个整形变量 D.变量p的值为100 答案:D 分析:有指针变量定义可知A、C说法是正确的,故不能选。在语句中p=a,表示指针变量取得变量a地址,B说法也正确,也不能选择。D中不能说变量p的值为100,应该*p的值为100,所以选择D。 ? 例题2:若有以下定义,则赋值正确的是( )。 int a ,b , *p; float c, *q; A.p=c B.q=p C.p=NULL D.q=new int 答案:C 分析:指针变量使用规定,不同类型的指针变量不能赋值,也不能取得普通变量地址,故A、B不正确,不能选择。因为q是float类型指针变量,不能申请int 类型地址,D不正确,也不能选择。因为任何类型的指针变量都能取得NULL指针,所以C正确。 ? 例题3:如果x是整型变量,则合法的形式是( )。 A.&(x+5) B.*x    C.*x     D.*x 答案:D 分析:因为C++语言表达式没有地址,A不正确。C++语言普通变量不能用*运算,因此B和C也不正确。x表示变量x的地址,*x是x 地址的值,所以D正确。 例题4:若要建立如下关系,错误的语句组是( )。 span style=mso-ignore:vglayout; ;z-index:1;left:0px;margin-left:144px;margin-top:1px; width:256px;height:38px? A. B. C. D. int *p=x, x; int x, p=x; int *p, x=10; int *p, x; *p=10; *p=10; *p=x; p=x ; x=10; 答案:A 分析:在变量类型说明语句中 *表示变量是指针变量,在其他语句中,*称为指针运算,用于访问指针所指向的对象的值,称为取地址运算,用来得到一个对象的地址。故B、C、D都是正确的,不能选择。A中指针变量p取不到x地址,因为x还没有定义,所以选择A。 ? 例题5:若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i10)。 A.p[i]     B.*(*(a+i)) C.a[p-a] D.*(a[i]) 答案:B 分析:指针就变量p取得数组a的首地址,由指针与数组关系知,p[i]表示数组元素第i+1元素值,p[i]=a[i]正确,故A不能选。*(a+i)表示一维数组a第i+1元素值,*(*(a+i)表示对第i+1元素值再取值是错误操作,所以选B。a[p-a]=a[0]正确,故不能选择C。*(a[i])也正确(见上题),也不能选D。 ? 例题6:写出下列程序运行结果是( )。 #include void main() { char ch[3][4]={“AAA”,”BB”,”CCC”},(*q)[4]=ch, *p; // ch是二维数组, q是指向一维数组指针,并且一维数组每行只有4个字符 //q并取得二维数组ch首地址 int i; p=new char; //申请地址 *p=’b’; //装入字符b *(*q+3)=*p; for(i=0;i3;i++) coutQ[I]ENDL; SPAN } A. B. C. D. AAAbBB AAAb AAA AAA BB BB bBB

文档评论(0)

1亿VIP精品文档

相关文档