选择题合辑2

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三者;

【解析】

  1. const 修饰 *p,指向的对象只读,指针的指向可变:

    const int *p=&a;

  2. const修饰p,指向的对象可变,指针的指向不可变:

    int *const p=&a;

  3. 指针不可改变指向,指向的内容也不可变

    const int * const p=&a;

const放在*的左侧任意位置,限定了该指针指向的对象是只读的;const放在*的右侧,限定了指针本身是只读的,即不可变的。

原文地址:https://www.cnblogs.com/fzujly/p/14851284.html