c语言中转向的指针,【c语言程序设计】指针.docx

第一章 CH8指针

8.1选择题

1?设有如下定义:

struck sk { int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是( C )。

A) p=&a; B) p=data.a; C) p=&data.a; D)*p=data.a;

2.语句 int *p;说明了C _。

p是指向一维数组的指针

p是指向函数的指针,该函数返回一 int型数据

p是指向int型数据的指针 //指针的定义

p是函数名,该函数返回一指向int型数据的指针

下列不正确的定义是(A )。

A. int *p=&i,i;B.i nt *p,i;

C. int i,*p=&i;D.int i,*p;

选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变

量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i

分配空间,因此i在内存空间的地址就可以确定了;然后再定义 p,此时可以为p赋i的地 址,C正确)

4.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D )

A) p=qB) *p=*qC) n=*qD) p=n

p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

选项A, q中为地址,因此可将此地址赋给p

选项B, *p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于 在定义q时为其初始化,将 p中n的地址给q,因此p中存放n的地址,*q表示q所指向 对象n的内容.因此*p=*q相当于n=n;

选项C, n=*q 等价于n=n;

选项D, p中只能存放地址,不能将 n中的整数值赋给 p

5.有语句:int a[10],;则一B是对指针变量 p的正确定义和初始化。

A)in t p=*a;B)i nt *p=a;C)i nt p=& a;D)i nt *p=&a;

选项A, a是数组名,不是指针变量名,因此不可用*标注数组名a

选项C, a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应

在变量名前加*,标明p是指针变量

选项D, a是数组名,数组名就是地址,无需再用地址符号。

6?若有说明语句 "int a[5],*p=a;则对数组元素的正确引用是 (C )。

A.a[p]B.p[a]C.*(p+2)D.p+2

首先定义一个整型数组a, a的长度为5,然后定义一个指针变量p,并同时对p进行初

始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素 a[0]的地址。

对于数组元素下标的引用(详见p144), 一般形式 数组名[下标]其中下标为逻辑地址下

标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

选项A,p中存放的是地址,不是整数,不能做数组元素的下标

选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

选项C,(重点!! !详见p231~234)p+2表示指向同一数组中的下两个元素的地址,当

前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

7?有如下程序

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

则数值为9的表达式是_B

A) *P+9B) *(P+8)C) *P+=9D) P+8

(重点!! !详见 p231~234)

首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初

始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素 a[0]的地址。

数组中9对应的是a[8],选项B, P+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8) 则表示该地址内所存放的内容,即a[8]的值。

选项A,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1. *P+9=1+9=10

选项C,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值。因此*P+=9即

*P =*P+9,等价于 a[0]=a[0]+9.

选项D,P+8表示数组中后8个元素的地址,即 a[8]的地址,而非a[8]中的值。

8?在C语言中,以 _D_作为字符串结束标志

A) ' \n ' B) '' C) ' 0' D)' \0 '

9?下列数据中属于 字符串常量”的是(A )。

A. “ a”B.{ABC}C. ' abc\0 ' D. ' a'

若干个字符构成字符串

在C语言中,用单引号标识字符;用双引号标识字符串

选项B,C,分别用{}和’标识字符串 选项D,标识字符。

10.已知 cha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值