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语言指针练习题的主要内容,如果未能解决你的问题,请参考以下文章

C语言进阶学习笔记二指针的进阶(练习篇)

C语言指针练习题

C语言指针练习题

C语言进阶学习笔记二指针的进阶(重点必看+代码演示+练习)

梦开始的地方——C语言指针练习题

C语言指针进阶第五站,函数指针