2-3
对于以下结构定义,++p->str
中的++
加在 _A。
struct {
int len;
char *str;
} *p;
A.指针str上
B.指针p上
C.str指的内容上
D.以上均不是
2-10
以下代码:
struct Student{
int n;
struct Student * next;
};
struct Student a[3]={5,&a[1],7,&a[2],9, NULL};
struct Student *p;
p=a;
那么,以下表达式不能够正确地访问到第3个结构体数组元素a[2]的成员n(其值为9)的是(C )
A.p[2].n
B.(p+2)->n
C.*(p+2).n
D.p->next->next->n
2-15
若有定义char *str[]={“Python”, “SQL”, “JAVA”, “PHP”, “C++”};
则表达式*str[1] > *str[3]
比较的是:(D)
A.字符P和字符J
B.字符串SQL和字符串PHP
C.字符串Python和字符串JAVA
D.字符S和字符P
【解析】str[1]是个字符指针,为SQL,str[3]时PHP。本身为字符指针,指向字符串的首地址,再加个星号,则变为指向字符,则为第一个字符。
2-59
const int *p说明不能修改(B)。
A.p指针;
B.p指针指向的变量;
C.p指针指向的数据类型;
D.上述A、B、C三者;
【解析】
-
const 修饰 *p,指向的对象只读,指针的指向可变:
const int *p=&a;
-
const修饰p,指向的对象可变,指针的指向不可变:
int *const p=&a;
-
指针不可改变指向,指向的内容也不可变
const int * const p=&a;
const放在*的左侧任意位置,限定了该指针指向的对象是只读的;const放在*的右侧,限定了指针本身是只读的,即不可变的。