指针基础(选择题)

1.

设有以下程序段 

struct MP3

{

    char name[20];

    char color;

    float price;

} std, *ptr;

ptr = &std;

若要引用结构体变量 std 中的 color 成员,写法错误的是 【 正确答案: D
A.std.color
B.ptr->color 
C.(*ptr).color
D.std->color

2.

若有函数 void fun(double a[], int *n)  {……}  以下叙述中正确的是 【 正确答案: B
A.形参 a 和 n 都是指针变量
B.形参 a 是一个数组名,n 是指针变量
C.调用 fun 函数时将把 double 型实参数组元素一一对应地传送给形参 a 数组
D.调用 fun 函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

3.

若有以下语句:int a[3],*p=a;则&a[1]-p的值是( 【 正确答案: A】)
A.1
B.2
C.3
D.4

4.

有以下程序

#include <stdio.h>

int main()

{

 int m=3,n=2,*p=&m,*q=&n,*r;

 r=p;

 p=q;

 q=r;

 printf("%d,%d,%d,%d",m,n,*p,*q);

}

执行后输出的结果是 【 正确答案: A

A.3,2,2,3
B.1,2,2,1
C.2,1,2,1

D.3,1,3,1

5.

在下面的定义语句中,错误的是(  【 正确答案: A】)

 A.int n=20, a[n];

 B.char *a[3];

 C.char s[20]="test";

 D.int a[]={1,2};

6.

有以下程序,输出结果是( 【 正确答案: C】 )

#include<stdio.h>

int main()

{

int a=1, b=3, c=5;

int *p1=&a, *p2=&b, *p=&c;

*p=*p1*(*p2);

printf("%d\n", c);

return 0;

}

A、1

B、2

C、3

D、4

7.

有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10};

int *p=&a[3],b;

b=p[5];

则b的值是(  【 正确答案: D】 )

A. 5

B. 6

C. 8

D. 9

8.

设有以下语句:

struct stu

{

   int a;

   float b;

} stutype;

则下面的叙述不正确的是:( 【 正确答案: C】)

A. struct 是定义结构体类型的关键字

B. struct stu是用户定义的结构体类型。

C. stutype是用户定义的结构体类型名

D. a 和b都是结构体成员名

9.

已知: int a[6], *p = a ; 则下列不能表示a[1]地址的表达式是( 【 正确答案: D】)

A. p+1

B. ++p

C. a+1

D. a++

10.

在整型指针变量p1、p2的定义中,错误的是 【 正确答案: A】。

A.  int x, *p1, p2;

B.  int *p1, x, *p2;

C.  int x, *p1=&x, *p2;

D.  int *p1, x, *p2=&x;

得分:5.00

11.

在基本数据类型相同的两个指针变量之间,不能进行的运算是 【 正确答案: C】。

A.  <

B.  =

C.  +

D.  –

12.

以下选项中,不能正确赋值的是 【 正确答案: B

A.  char s[ ] = “china” ;

B.  char s[10 ] ; s1[ ]= “china” ;

C.  char *s = “china” ;

D.  char *s[4] = “china\n” ;

13.

在说明语句“int *f;” 中,标识符 f代表是 【 正确答案: A】。

A.  一个用于指向整型数据的指针变量

B.  一个用于指向一维数组的行指针

C.  一个用于指向函数的指针变量

D.  一个返回值为指针型的函数名

14.

若有如下定义 int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=a; 则*p的值是 【 正确答案: B

A.  0

B.  1

C.  2

D.  定义错误

15.

对于"int *pa[5];"的描述中, 【 正确答案: D】是正确的。

A. pa是一个指向数组的指针,所指向的数组是5个int型元素

B. pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C. pa [5]表示某个元素的第5个元素的值

D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针

16.

若有定义“int c[5], *p=c;”,则以下对数组c元素地址的正确引用是 【 正确答案: D】。

A.  p+5

B.  c++

C.  &c+1

D.  &c[0]

17.

若有定义:int x,*p; 则以下正确的赋值表达式是 【 正确答案: C

A. *p=&x;

B. p=x;

C. p=&x;

D. *p=*x;

18.

变量的指针,其含义是指该变量的 【 正确答案: B

A. 值

B. 地址

C. 名

D. 一个标志

19.

若有语句int *p,m=5,n;以下正确的程序段的是 【 正确答案: D

A. p=&n;scanf(“%d”,&p);

B. p=&n;scanf(“%d”,*p);

C. scanf(“%d”,*n);*p=n;

D. p=&n;*p=m;

  • 42
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值