指针150概要Word文件下载.docx
- 文档编号:17822349
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:31
- 大小:27.32KB
指针150概要Word文件下载.docx
《指针150概要Word文件下载.docx》由会员分享,可在线阅读,更多相关《指针150概要Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
point,*point,&
a,&
*point,point
D
7若有说明:
int*p,m=5,n;
下面正确的程序段是
n;
scanf(“%d”,&
p);
scanf(“%d”,&
n);
*p=n;
*p=m;
8设char*s=”\ta\017bc”;
则指针变量s指向字符串所占的字节数是
9
5
6
7
9下面程序段中,for循环的执行次数是()
char*s=”\ta\018bc”;
for(;
s!
=’\0’;
s++)printf(“*”);
10下面能正确进行字符串赋值操作的是
chars[5]={“ABCDE”};
chars[5]={‘A’,’B’,’C’,’D’,’E’};
char*ss="
ABCDE"
;
char*s;
scanf(“%s”,s);
11下面程序段的运行结果是()
char*s=”abcde”;
s+=2;
printf(“%d”,s);
cde
字符’c’
字符的’c’地址
无确定的输出结果
12设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不正确执行的赋值语句是()
c=*p1+*p2;
p2=c;
p1=p2;
c=*p1*(*p2);
13设有下面的程序段:
chars[]=”china”;
char*p;
p=s;
则下列叙述正确的是()
s和p完全相同
数组s中的内容和指针变量p中的内容相等
*P与s[0]相等
s数组长度和p所指向的字符串长度相等
14下面程序段的运行结果是()
char*format=”%s,a=%d,b=%d\n”;
inta=1,b=10;
a+=b;
printf(format,”a+=b”,a,b);
for,”a+=b”,ab
format,”a+=b”
a+=b,a=11,b=10
以上结果都不对
15若有语句:
chars1[]=”string”,s2[8],*s3,*s4=”string2”;
则对库函数strcpy()的正确调用是
strcpy(s1,”string2”);
strcpy(s4,”string1”);
strcpy(s3,”string1”);
strcpy(s2,s4);
16下面说明不正确的是
chara[10]=”china”;
chara[10],*p=a;
p=”china”;
char*a;
a=”china”;
chara[10],*p;
p=a=”china”;
17若有说明语句chara[]=”Itismine”;
char*p=”Itismine”;
则以下不正确的叙述是()
a+1表示的是字符t的地址;
p指向另外的字符串时,字符串的长度不受限制;
p变量中存放的地址值可以改变;
a中只能存放10个字符;
18若有定义chars[10];
则在下面表达式中不表示s[1]的地址是
s+1
s++
s[0]+1
s[1]
19下面程序段的运行结果是()
chars[6];
s=”abcd”;
printf(“\”%s\”\n”,s);
”abcd”
”abcd“
\”abcd\”
编译出错
20若有下面定义,则对a数组元素的正确引用是()
inta[5],*p=a;
a[5]
a+2
*(p+5)
*(a+2)
21若有下面定义,则对a数组地址的正确引用是()
a[0]
a+1
p+5
*a+1
A
22若有下面定义,则p+5表示()
inta[10],*p=a;
元素a[5]的地址
元素a[5]的值
元素a[6]的值
元素a[6]的地址
23若有下面定义:
char*cc[2]={“1234”,”5678”};
则正确的描述是
cc数组的两个元素中各自存放了字符串“1234“和”5678“的首地址;
cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址;
cc是指针变量,它指向含有两个数组元素的字符型一维数组;
cc数组元素的值分别是“1234“和”5678“;
24以下程序段给数组所有元素输入数据,空处应填入()
{inta[10],i=0;
while(i<
10)scanf(“%d”,_______________);
}
a+i
a[++i]
a+(i++)
a[i]
25下面程序是把数组元素中的最小值放入a[0]中,则在if语句中应填入()
{staticinta[10]={3,5,3,4,5,6,65,345,2,45},*p=a,i;
for(i=0;
i<
10;
i++,p++)
if(___________)*a=*p;
p<
a
*p<
*a[0]
*p[0]<
26若有定义语句int(*p)[M];
其中的标识符p是
M个指向整型变量的指针;
指向M个整型变量的函数指针;
一个具有M个整型元素的一维数组的指针变量;
具有M个指针元素的一维指针数组,每个元素都只能指向整型变量;
27下面叙述中不正确的是
预处理命令行都必须以#号开始;
在程序中凡是以#号开始的语句都是预处理命令行;
C程序在执行过程中对预处理命令行进行处理;
以下是正确的宏定义#defineIBM_PC
28下面叙述中正确的是
在程序的一行上可以出现多个有效的预处理命令行;
使用带参的宏时,参数的类型应与宏定义时的一致;
宏替换不占用运行时间,只占编译时间;
在以下定义中CR是称为“宏名”的标识符;
29设有inta[]={10,11,12},*p=&
a[0];
则执行完*p++;
*p+=1;
后a[0],a[1],a[2]的值依次是
10,11,12
11,12,12
10,12,12
11,11,12
30若有以下说明和语句,inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
且0<
=i<
10,则下面哪个是对数组元素地址的正确表示。
(a+1)
a++
p
p[i]
31若有以下说明和语句,inta[10],*p1,*p2;
p1=a;
p2=&
a[5];
则p1-p2的值为。
没有指针与指针的减法
32已知有以下的说明:
inta[]={8,1,2,5,9,4,7,6,0,3};
则a[*(a+a[3])]的值为
33设有说明intk[2]={2,3},*p=&
k[0];
则下列错误的C语句是
k+=1;
p+=1;
*p++;
(*P)++;
34若有以下说明和语句,inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
10,则下面哪个是对数组元素的错误引用
*(a+i)
a[p-a]
p+i
*(&
a[i])
35已知有以下的说明,floata[3]={1.2,45.6,-23.0};
float*p=a;
那么执行语句a=p+a;
后,a[0]的值等于
1.2
45.6
–23.0
语句有错
36设有说明ints[2]={0,1},*p=s;
则下列错误的C语句是
s+=1;
37设有说明inta[]={3,2,0,1,4,5,9,8,6};
则a[*(a+a[4])]的值为
3
2
38若有下面程序段,则正确的输出是______。
char*p=”break”,a[10]={‘a’,’b’,’c’,’d’};
printf(“%c,%c,%c,%c”,*(p+1),p[2],*(a+2),a[1]);
e,k,b,c
r,a,a,b
r,e,c,b
有语法错,无正确输出
39若有以下说明:
intm[]={1,2,3,4,5,6,7,8},*p=m;
则数值为7的表达式是
*p+7
p+6
*p+=6
*(p+7)
40若有以下说明,且0<
5,则____是对数组元素的错误引用。
inta[]={10,20,30,40,50};
int*p=a,i;
*(&
a[i])
a[p+i]
*(p+i)
*(a+i)
41假定P1和P2是已赋值的字符指针,则下述有关运算中,____是非法的。
*P1=*P1+*P2
*P1+=100-*P2
P2=P1/2
*P2=*P1-‘A’
42若有以下说明:
intm[5]={2,4,6,8,10},*p=m;
则数值为8的表达式是
*p+8
p+8
*(p+6)
43若有以下说明:
5,则____是对数组元素地址的正确表示。
p++
p[i]
44若有以下说明:
floatx,y=8.0,*pf=&
则与x=y;
等价的语句是
x=*pf;
*pf=*&
y;
x=&
x=**pf;
45对于基类型相同的两个指针变量之间,不能进行的运算是
<
=
+
-
46有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
*P+9
*(P+8)
*P+=9
P+8
47下列程序段的输出结果是
voidfun(int*x,int*y)
{
printf("
%d%d"
*x,*y);
*x=3;
*y=4;
intx=1,y=2;
fun(&
y,&
x);
x,y);
2143
1212
1234
2112
48下列程序的输出结果是
main()
{chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
%d"
*--p);
非法
a[4]的地址
49若定义了以下函数:
voidf(……)
{……
*p=(double*)malloc(10*sizeof(double));
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是
double*p
float**p
double**p
float*p
50以下只有在使用时才为该类型变量分配内存的存储类说明是
auto和static
auto和register
register和static
extern和register
51已知函数定义如下:
floatfun1(intx,inty)
floatz;
z=(float)x/y;
return(z);
主调函数中有inta=1,b=0;
可以正确调用此函数的语句是
%f"
fun1(a,b));
fun1(&
b));
fun1(*a,*b));
fun1(b,a));
52设有说明int(*p)[4];
4个指向整型变量的指针变量
指向4个整型变量的函数指针
一个指向具有4个整型元素的一维数组的指针
具有4个指向整型变量的指针元素的一维指针数组
53已知:
chars[100];
inti;
则引用数组元素的错误的形式是
s[i+10]
*(s+i)
*(i+s)
*((s++)+i)
54已知:
chars[6],*ps=s;
则正确的赋值语句是
s="
12345"
;
*s="
ps="
*ps="
55已知:
chara[3][10]={"
BeiJing"
"
ShangHai"
TianJin"
},*pa=a;
不能正确显示字符串"
的语句是
%s"
a+1);
*(a+1));
*a+1);
&
a[1][0]);
56已知:
inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;
则值为3的表达式是
p+=2,*(p++)
p+=2,*++p
p+=2,*p++
p+=2,++*p
57已知:
inta[]={1,3,5,7},y*p=a;
为使变量y的值为3,下列语句正确的是
y=++*p++;
y=++(*p++);
y=(++*p)++;
y=(*++p)++;
58已知:
intx[]={1,3,5,7,9,11},*ptr=x;
则能够正确引用数组元素的语句是
x
*(ptr--)
x[6]
*(--ptr)
59已知charstr[]="
OK!
"
对指针变量ps的说明和初始化是
charps=str;
char*ps=str;
charps=&
str;
char*pa=&
60已知inta[3][4],*p=a;
p+=6;
那么与*p的值相同的是______。
*(a+6)
a[0]+6)
*(a[1]+=2)
a[0][0]+6)
61已知inti=0,j=1,*p=&
i,*q=&
j;
错误的语句是
i=*&
p=&
i;
j=*p++;
q;
62若有说明语句:
inta,b,c,*d=&
c;
,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
scanf("
%d%d%d"
b,d);
b,&
d);
a,b,d);
a,b,*d);
63若定义:
inta=511,*b=&
则printf("
%d\n"
*b);
的输出结果为
无确定值
a的地址
512
511
64若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
p=2*(int*)malloc(sizeof(int));
p=(int*)malloc(2*sizeof(int));
p=(int*)malloc(2*2);
p=(int*)calloc(2,sizeof(int));
65有以下程序
inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;
i<
9;
i+=2)
s+=*(t+i);
printf(“%d\n”,s);
程序执行后的输出结果是
45
20
25
36
66有以下程序
67
已知charx[5],*y=x;
则正确的赋值语句是
*y=“abcd”
*x=“abcd”
y=“abcd”
x=“abcd”
68已知:
int*p,a;
则语句“p=&
”中的运算符“&
”的含义是
位与运算
逻辑与运算
取指针内容
取变量地址
69已知:
inta,*p=&
则下列赋值语句错误的是
a);
printf(“%d”,a);
printf(“%d”,*p);
70已知:
chars[10],*p=s,则在下列语句中,错误的语句是
p=s+5;
s=p+s;
s[2]=p[4];
*p=s[0];
71已知:
intx则下面指针变量的语句正确的是
intpb=&
int*pb=x;
int*pb=&
*pb=*x;
72以下语句或语句组中,能正确进行字符串赋值的是
char*sp;
*sp="
right!
chars[10];
s="
*s="
char*sp="
73程序中若有如下的说明和定义语句
charfun(char*);
{
char*s="
one"
a[5]={0},(*f1)()=fun,ch;
以下选项中对函数fun的正确调用语句是
(*f1)(a);
*f1(*s);
ch=*f1(s)
74若有语句:
char*line[5];
,以下叙述中正确的是
定义line是一个数组,每个数组元素是一个基类型为char的指针变量
定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
定义line是一个指针数组,语句中的*号称为间址运算符
定义line是一个指向字符型函数的指针
75设有定义:
intn1=0,n2,*p=&
n2,*q=&
n1;
,以下赋值语句中与n2=n1;
语句等价的
*p=*q;
p=q;
*p=&
p=*q;
76若有定义:
intx=0,*p=&
,则语句printf("
*p);
的输出结果是
随机值
x的地址
p的地址
77有以下程序
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&
a[3],*q=p+2;
printf("
*p+*q);
程序运行后的输出结果是
16
10
8
78有以下程序
{inta[]={2,4,6,8,10},y=0,x,*p;
p=&
a[1];
for(x=1;
x<
3;
x++)y+=p[x];
y);
10
11
14
15
79以下定义语句中正确的是( )。
chara='
A'
b='
B'
floata=b=10.0;
inta=10,*b=&
float*a,b=&
80有以下程序
{inta=7,b=8,*p,*q,*r;
q=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针 150 概要
![提示](https://static.bdocx.com/images/bang_tan.gif)