C语言指针练习题
Posted 张夷陵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言指针练习题相关的知识,希望对你有一定的参考价值。
1.如有下面的语句说明, 则表达式 *(p+3) 的值是 ( )。
int a[]=2,3,4,5,6,7;
int *p=a;
A.6 B.5 C.4 D.3
2.如有下面的语句说明, 则执行语句for(i=0;*s++;i++); 后变量i的值是 ( )。
int i;
char *s="a\\n46\\b";
A.7 B.5 C.6 D.8
3.如有下面的语句说明, 则正确的赋值语句是 ( )。
char a[10], *p=a;
A.p=”VC++”;
B.a=”VC++”;
C.a[10]=”VC++”;
D.*p=”VC++”;
4.如有下面的语句说明, 则下面赋值表达式合法的是 ( )。
int i, *p;
A.*p=*i
B.p=i
C.p=&i
D.*p=&i
5.若有程序段
int b[4],*p,*q;
p=&b[1]; q=&b[3];
则q-p表示的意义是( )。
A.p与q之间的字节数
B表达式错误
C.p占据的字节数
D.p与q之间数据个数
6.假设有下面定义语句:
float a[10];
float *p=a;
则p++相当于是加上()个字节
A.sizeof(float*)
B.sizeof(float)
C.1个字节
D.sizeof(a)
7.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为
A.*(a+i*n+j)
B.*(*(a+i)+j)
C.*(a+j*n+i)
D.*(*a+i)+j
8.以下程序运行后的输出结果是
int a[10]=1,2,3,4,5,6,7,8,9,10,*p=&a[3],b;
b=p[5];
printf("%d",b);
A.5
B.6
C.8
D.9
9.下面给出的选项中,能定义为一个指针数组的语句是
A.int (*ptr)[5];
B.int *ptr[5];
C.int ptr[5];
D.int *(ptr[5]);
10.下面关于表达式(*p)++和*p++的含义分析说明中,错误的是
A.(*p)++指的是先取出p指向的存储单元中的内容,然后将取出的数值加1,而p仍然指向原来的存储单元。
B.表达式(*p)++和*p++具有不同的含义,(*p)++并没有修改指针p的指向,而*p++则修改了指针p的指向。
C.*p++则指的是先取出p指向的存储单元中的内容,然后将p值加1,此时p不再指向原来的存储单元。
D.(*p)++指的是先取出p指向的存储单元中的内容,然后将取出的数值加1,此时p不再指向原来的存储单元。
11.有int *p[10];以下说法错误的是________。
A.p中每个元素都是一个指针变量
B.p++操作是合法的
C.p是数组名
D.p是一个指针数组
以上是关于C语言指针练习题的主要内容,如果未能解决你的问题,请参考以下文章