C语言指针习题及答案
B)ptr2=k
C)ptr1=ptr2
3、若有说明 :int *p,m=5,n; 以下程序段正确的就是
D
D)k=*ptr1*(*ptr2) 。
A)p=&n ; scanf( “%d ”,&p);
C)scanf( “%d”,&n); *p=n ;
4、已有变量定义与函数调用语句
B)p = &n ;
scanf(“%d ”,*p);
均在有效范围内 )
A)&a[0][0]+6*i+j
B)&a[0][0]+4*j+i
C)&a[0][0]+4*i+j
38、下面程序的运行结果就是
B
D)&a[0][0]+6*j+I 。
main ( ) { int x[5]={2,4,6,8,10}, *p, **pp ;
p=x , pp = &p ;
printf( “%d”,*(p++)); printf( “%3d”,**pp); }
A)a+1 表示的就是字符 t 的地址 B)p 指向另外的字符串时 ,字符串的长度不受限制
C 语言指针习题及答案
C)p 变量中存放的地址值可以改变
D)a 中只能存放 10 个字符
19、若已定义 char s[10]; 则在下面表达式中不表示 s[1] 的地址就是
B
。
A)s+1
B)s++
C)&s[0]+1
7、下面判断正确的就是
C
C)*&p,*p,&a 。
D)&a,&*p,p
A)char *a= ”china”; 等价于 char *a; *a= ”china ”;
B)char str[10]={ “china”}; 等价于 char str[10]; str[ ]={ “china”;}
C)char *s= ”china”; 等价于 char *s; s= ”china”;
D)p[1]+2
C
。
A)&a
B)a+1
C)a
27、若有定义 :int (*p)[4];
则标识符 p C
。
D)&a[1]
A) 就是一个指向整型变量的指针
B)就是一个指针数组名
C)就是一个指针 ,它指向一个含有四个整型元素的一维数组
D) 定义不合法
28、以下与 int *q[5]; 等价的定义语句就是
C
C 语言指针习题及答案
指针习题及答案
一.选择题
1、变量的指针 , 其含义就是指该变量的
B
。
A) 值
B) 地址
2、已有定义 int k=2;int *ptr1,*ptr2;
的赋值语句就是 B
。
C)名
D) 一个标志
且 ptr1 与 ptr2 均已指向变量 k, 下面不能正确执行
A)k=*ptr1+*ptr2
13、以下与库函数 strcpy(char *p1,char *p2)
功能不相等的程序段就是
D
。
A)strcpy1(char *p1,char *p2) { while ((*p1++=*p2++)!=
B)strcpy2(char *p1,char *p2)
’\0’) ; }
{ while ((*p1=*p2)!= ’\0’) { p1++; p2++ } } C)strcpy3(char *p1,char *p2)
A)8
B)16
C)20
36、若要对 a 进行自增运算 , 则 a 应具有下面说明 D
D) 输出不合法 。
A)int a[3][2]; C)char (*a) [3] 37、若有定义 int a[4][6]; 地址的表达式 A
则能正确表示 。
B)char *a[ ]={ “12”,”ab”}; D)int b[10], *a=b; a 数组中任一元素 a[i][j](i,j
D)q[i]=&b[0][0] 。
A)int p[3];
B)int k;
C)char *a[3]
int *a=p;
int *a=&k;
33、以下选项中 , 对指针变量 p 的正确操作就是 B
。
D)int b[10]; int *a=b+1;
A)int a[3], *p; p=&a;
B)int a[5], *p; p=a;
B)cc 数组的两个元素分别存放的就是含有 4 个字符的一维字符数组的首地址
C)cc 就是指针变量 ,它指向含有两个数组元素的字符型一维数组
D)cc 元素的值分别维 ”1234 ”与 ”5678”
42、已有定义 int (*p)( );
。
A)int q[5]
B)int *q
29、以下正确的说明语句就是
B
C)int *(q[5]) 。
D)int (*q)[5]
A)int *b[]={1,3,5,7,9} ; B)int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}; C)int a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]};
A)4 4
B)2 4
C)2 2
39、若有定义 int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ;
D)4 6 则能够正确表示数组元素
x[1][2] 的表达式就是 D A)*((*p+1)[2])
。 B)(*p+1)+2
C)*(*(p+5)) 40、若有说明 :char *language[]={ language[2] 的值就是 B
D)char c[4]= ”abc”,d[4]= ”abc”; 等价于 char c[4]=d[4]= ”abc”;
8、下面程序段中 ,for 循环的执行次数就是
C
。
char *s= ”\ta\018bc”;
for ( ; *s!= ’\0’; s++) printf( “*”) ;
A)9
B)7
C)6
A
。
A)*(*(a+i)+j)
B)(a+i)[j]
C)*(a+i+j)
D)*(a+i)+j
23、若有定义 :int a[2][3]; 则对 a 数组的第 i 行第 j 列元素地址的正确引用就是 D
。
A)*(a[i]+j)
B)(a+i)
C)*(a+j)
D)a[i]+j
24、若有程序段 :int a[2][3],(*p)[3];
C)char *a; a= ”china ”;
18、设有说明语句 :char a[]=
述就是 D
。
” It is mine
B)char a[10],*p=a; p= ”china”; D)char a[10],*p; p=a= ”china”; ” ;char *p= ” It is mine ” ; 则以下不正确的叙
char *s= ”abcde”;
s+=2 ; printf( “%d”,s);
A)cde
B) 字符 ’c’
C)字符 ’c’的地址
D) 不确定
11、设 p1 与 p2 就是指向同一个字符串的指针变量 ,c 为字符变量 , 则以下不能正确执行的赋
值语句就是 B
。
A)c=*p1+*p2
B)p2=c
C)p1=p2
9、下面能正确进行字符串赋值操作的就是
C
D)5 。
A)char s[5]={ “ABCDE ”};
B)char s[5]={ ‘A’,’B ’,’C’,’D ’,’E’};
C)char *s ; s= ”ABCDE ”;
10、下面程序段的运行结果就是
C
D)char *s; scanf( “%s”,s) ; 。
D)p = &n ;
*p = m ; :int a=25;print_value(&a);
下面函数的输出结果就是
D
。
void print_value(int *x) { printf( “%d\n ”,++*x); }
A)23
B)24
C)25
D)26பைடு நூலகம்
5、若有说明 :int *p1, *p2,m=5,n;
D)*(*(p+1)+2) “FORTRAN ”,”BASIC ”,”PASCAL ”,”JAVA ”,”C”}; 则
。
A) 一个字符
B) 一个地址
C)一个字符串
41、设有定义 :char *cc[2]={ “1234”,”5678”}; 则正确的叙述就是
D) 一个不定值
A
。
A)cc 数组的两个元素中各自存放了字符串 ”1234”与 ”5678”的首地址
D)p1=x+2,*++p1
C 语言指针习题及答案
35、下面程序段的输出就是
C
。
int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k; for (k=01; k<4; k++) q[k]=&a[k*3];