A. pb=&x B. pb=x; C. *pb=&x; D. *pb=*x
int *p ,a=10 ,b=1 ; p=&a ; a=*p+b ;
9、 有如下程序段
执行该程序段后,a 的值为 。
A. 12 B. 11 C. 10 D. 编译出错
double r=99 , *p=&r ; *p=r ;
10、若有以下定义和语句:
则以下正确的叙述是 。
A. 以下两处的*p 含义相同,都说明给指针变量p 赋值
B. 在\;\中,把r 的地址赋值给了p 所指的存储单元 C. 语句\;\把变量r 的值赋给指针变量p D. 语句\;\取变量r 的值放回r 中 此功能的函数是 。
A. funa (int *x,int *y) { int *p; *p=*x; *x=*y;*y=*p; } B. fund (int x,int y) { int t; t=x;x=y;y=t; } C. func (int *x,int *y) { *x=*y;*y=*x;}
D. fund (int *x,int *y) { *x=*x+*y;*y=*x-*y;*x=*x-*y; } 是 。
A. *p=&a; scanf(\,p);
B. p=(long *)malloc(8); scanf(\,p); C. scanf(\,p=&a); D. scanf(\,&a);
A. < B. = C. + D. - 址的表达式是 。
A. p+1 B. a+1 C. a++ D. ++p
int a[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ;
11、要求函数的功能是交换x 和y 中的值,且通过正确调用返回交换结果.能正确执行
12、若有说明:long *p ,a;则不能通过scanf 语句正确给输入项读入数据的程序段
13、对于类型相同的两个指针变量之间,不能进行的运算是 。
14、若已定义:int a[9] ,*p=a;并在以后的语句中未改变p 的值,不能表示a[1] 地
15、若有以下说明:
则数值为6 的表达式是 。
A. *p+6 B. *(p+6) C. *p+=5 D. p+5
44
16、设P1 和P2 是指向同一个int 型一维数组的指针变量,k 为int 型变量,则不能正
45
确执行的语句是 。
A. k=*P1+*P2; B. p2=k; C. P1=P2; D. k=*P1 * (*P2);
int a[ ]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} , *p=a ;
17、若有以下的定义:
则值为3 的表式是 。
A. p+=2 , *(p++) B. p+=2 ,*++p C. p+=3 , *p++ D. p+=2 ,++*p
int a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,*p=a ;
18、若有以下定义和语句:
则不能表示a 数组元素的表达式是 。
A. *p B. a[10] C. *a D. a[p-a]
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
19、有如下说明
则数值为9 的表达式是 。
A. *p+9 B. *(p+8) C. *p+=9 D. p+8 void main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s; for(p=a, s=a; p-a<10; p++) if(【 】)s=p; printf(\:%d\,*s): }
则在if 语句中的判断表达式应该是 。
A. p>s B. *p>*s C. a[p]>a[s] D. p-a>p-s
int a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,*p=a ;
20、下面程序输出数组中的最大值,由s 指针指向该元素.
21、若有以下定义和语句:
则不能表示a 数组元素的表达式是 。
A. *p B. a[10] C. *a D. a[p-a]
int w[2][3] ,(*pw)[3] ; pw=w ;
22、若有以下定义和语句:
则对w 数组元素非法引用是 。
A. *(w[0]+2) B. *(pw+1)[2] C. pw[0][0] D. *(pw[1]+2)
23、有以下说明和语句,则 是对c 数组元素的正确引用。
int c[4][5] , (*cp)[5] ; cp=c ;
A. cp+1 B. *(cp+3) C. *(cp+1)+3 D. *(*cp+2)
char str[ ]=\; char *ptr ; ptr=str ;
24、设有如下的程序段:
执行上面的程序段后 ,*(ptr+5)的值为 。
A. 'o' B. '\\0' C. 不确定的值 D. 'o'的地址
sss(char *s ,char *t )
{ while((*s)&&(*t)&&(*t++== *s++)) ; return(*s-*t) ; }
25、下面函数的功能是 。
A. 求字符串的长度 B. 比较两个字符串的大小 C. 将字符串s 复制到字符串t 中 D. 将字符串s 接续到字符串t 中 A. char ST[5]={\; C. char *S; S=\;
int fun1(char * x) { char *y=x; while(*y++) ; return(y-x-1);}
B. char S[5]={'A','B','C','D','E'}; D. char *S; scanf(\,S);
26、下面各语句行中,不能正确进行字符串赋值操作的语句是 。
27、下列函数的功能是 。
A. 求字符串的长度 B. 比较两个字符串的大小
C. 将字符串X 复制到字符串Y D. 将字符串X 连接到字符串Y 后面
#include < stdio.h> #include < string.h> void main( )
{ char *S1=\, *s2=\; s1++; s2++;
printf(\, strcmp( s1,s2)); }
28、请读程序:
上面程序的输出结果是 。
A. 正数 B. 负数 C. 零 D. 不确定的值
46
29、设有如下定义:
int (*ptr)( ); 则以下叙述中正确的是 。 A. ptr 是指向一维组数的指针变量 B. ptr 是指向int 型数据的指针变量
C. ptr 是指向函数的指针 ;该函数返回一个int 型数据
D. ptr 是一个函数名 ;该函数的返回值是指向int 型数据的指针 正确的调用方法是 。
A. (*p)max(a ,b); B. *pmax(a ,b);C. (*p)(a ,b) ; D. *p(a ,b); A. p=max; B. *p=max; C. p=max(a,b); D. *p=max(a,b); A. 代表函数的返回值 B. 指向函数的入口地址 C. 表示函数的类型 D. 表示函数返回值的类型
fun(int *c){ } void main()
{ int (*a)()=fun,*b(),w[10],c; ? }
30、若有函数max(a ,b),并且已使函数指针变量p 指向函数max ,当调用该函数时,
31、已有函数max(a,b),为了让函数指针变量p 指向函数max,正确的赋值方法是 。 32、已有定义 int (*p)();指针p 可以 。
33、若有以下说明和定义
在必要的赋值之后,对fun 函数的正确调用语句是 。
A. a=a(w); B.(*a)(&c); C. b=*b(w); D. fun(b);
char *aa[2]={\,\;
34、设有如下定义:
则以下说法中正确的是 。
A. aa 数组成元素的值分别是\和ABCD\
B. aa 是指针变量,它指向含有两个数组元素的字符型一维数组
C. aa 数组的两个元素分别存放着含有4 个字符的一维字符数组的首地址 D. aa 数组的两个元素中各自存放了字符'a'和'A'的地址
A. C 语言允许main 函数带形数,且形参个数和形参名均可由用户指定 B. C 语言允许main 函数带形参,形参名只能是argc 和argv C. 当main 函数带有形参时,传给形参的值只能从命令行中得到
D. 有说明: main(int argc,char *argv),则形参argc 的值必须大于1
47
35、以下正确的叙述是 。