答案:T
13.动态分配的内存空间不能被初始化。 答案:F
14. *p出现在赋值运算符的左边,它的作用是改变所指对象的值,出现在其他场合都是用来取出他所指对象的值。 答案:T
15.指针变量不能作为函数的参数。 答案:F
16.指针变量能加上一个非整型变量,如:p+=1.2是合法的。 答案:F
17. 一般情况下,一个指针如果指向了一个变量,*p就是这个变量,它相当于这个变量的替身。 答案:T
18. 两个相同类型的指针变量可以相减,它们的差表示两个指针变量之间相差的变量的个数。 答案:F
二、选择题 (每题3分,共36分)
1. 在整型指针变量p1、p2的定义中,错误的是( )。 A. int x, *p1, p2;
B. int *p1, x, *p2; C. int x, *p1=&x, *p2; D. int *p1, x, *p2=&x; 答案:A
2. 在基本数据类型相同的两个指针变量之间,不能进行的运算是( )。 A. < B. = C. + D. – 答案:C
3. 在说明语句“int *f( );” 中,标识符 f代表是( )。 A. 一个用于指向整型数据的指针变量 B. 一个用于指向一维数组的行指针 C. 一个用于指向函数的指针变量 D. 一个返回值为指针型的函数名 答案:D
4. 若有定义“int c[5], *p=c;”,则以下对数组c元素地址的正确引用是(A. p+5 B. c++ C. &c+1 D. &c[0] 答案:D
)。 5. 下面关于new和delete运算符的叙述中,错误的说法是( )。 A. 由new分配的内存空间是连续的
B. 如果当前内存无足够的空间可分配,则new运算符返回NULL C. 由new运算符分配的内存空间,当函数执行结束时系统会自动收回 D. 对于程序中的静态数组占用的存储空间不能用delete来释放 答案:C
6. 若有int k=1,a[10]={10,20,30,40};
int *p1=a,*p2=&a[2];
则下列不能正确执行的语句是( )。 A. k=*p1+*p2; B. p2=k; C. p1=p2; D. k=p2-p1; 答案:B
7.阅读下面程序,执行后的结果为( ) # include
*a = k ; *b = *a + k ; }
int main( )
{ int *a , *b, x = 10 , y = 15 ; a= &x ; b = &y ; fun ( a , b );
cout<<*a<<”,”<<*b< 8.以下选项中,不能正确赋值的是( ) A. char s[ ] = “china” ; B. char s[10 ] ; s1[ ]= “china” ; C. char *s = “china” ; D. char *s[4] = “china\\n” ; 答案:B 9.已知: int a[6], *p = a ; 则下列不能表示a[1]地址的表达式是( ) A. p+1 B. ++p C. a+1 D. a++ 答案:D 10.以下程序的运行结果是( ) point ( char * p ) { p+=3;} int main ( ) { char b [ 4 ] = { ‘a’ , ‘b’ , ‘c’ , ‘d’ } , *p = b ; point ( p ) ; cout<<*p< 11.设已有定义: char *st = “ how are you”; 下列程序段中正确的是(A. char a[11]; strcpy( ++a, st); B. char a[11], *p; strcpy( p=a+1, &st[4]); C. char a[11]; strcpy( a, st); D. char a[ ], *p; strcpy( p=&a[1], st+2); 答案:B 12. 以下程序段的运行结果是( ) char *p1,*p2, str[50]= \p1= \ strcpy(str+1,p2+1); strcpy(str+3,p1+3); cout< )