一.选择题
1.变量的指针,其含义是指该变量的 B 。
A)值 B)地址 C)名 D)一个标志
2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。
A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2)
3.若有说明:int *p,m=5,n;以下程序段正确的是 D 。
A)p=&n ; B)p = &n ;
scanf(“%d”,*p); scanf(“%d”,&p);
C)scanf(“%d”,&n); D)p = &n ;
*p=n ; *p = m ;
4.已有变量定义和函数调用语句: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;以下均是正确赋值语句的选项有哪些 C 。
A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ;
C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;
6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是 D 。
A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p
7.下面判断正确的是 C 。
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)char c[4]=”abc”,d[4]=”abc”; 等价于 char c[4]=d[4]=”abc” ;
8.下面程序段中,for循环的执行次数是 。
char *s=”\ta\018cb” \01等价于\1 0表示八进制前导符,\01 --\08 都是2个字节 \09就是3个字节
for ( ; *s!=’\0’ ; s++) printf(“*”) ; B
A)2 B)7 C)6 D)5
9.下面能正确进行字符串赋值操作的是 C 。
A)char s[5]={“ABCDE”};
B)char s[5]={ ‘A’,’B’,’C’,’D’,’E’