根据声明int a[10], *p=a; ,下列表达式错误的是( )。 A. a[9] B. p[5] C. a++ D. *p++
时间: 2023-09-17 11:05:43 浏览: 1588
### 回答1:
这道题目考查的是指针和数组的基础知识。
根据声明 `int a[10], *p=a;`,数组 `a` 存储了 10 个整数,指针 `p` 指向数组的首元素。
那么,下列表达式错误的是( )就可以分析了:
A. `a[9]` 正确,表示数组 `a` 的第 10 个元素。
B. `p[5]` 正确,表示指针 `p` 指向的数组中第 6 个元素。
C. `a` 正确,表示数组 `a` 的首地址。
D. `*p` 正确,表示指针 `p` 指向的数组中第 1 个元素。
因此,答案是没有错误的,选 E。
### 回答2:
正确答案是B. p[5]。
根据声明int a[10], *p=a;,a是一个长度为10的整型数组,p是一个指向整型的指针,并且指向数组a的第一个元素。下面解释为什么B选项错误:
B. p[5]是对指针p的第6个元素进行访问。在声明中,我们将p初始化为a,因此p指向a的第一个元素。因此,p[5]表示a[5],是数组a的第6个元素。所以,B选项是错误的。
其他选项的解释如下:
A. a[9]是数组a的最后一个元素。这是正确的访问方式。
C. a表示整个数组a。这是正确的表示方式。
D. *p表示指针p所指向的地址的内容,即数组a的第一个元素。这也是正确的访问方式。
### 回答3:
下列表达式错误的是D. *p。
给出的声明是 int a[10], *p=a; 这行代码的含义是创建了一个长度为10的整型数组a,并将数组的第一个元素的地址赋给了指针变量p。
根据数组的定义,a[9] 表示数组a中的第10个元素,所以表达式a[9]是正确的。
根据指针的定义,p[5] 表示指针p所指向的元素的第6个元素,所以表达式p[5]也是正确的。
a表示整个数组a,所以表达式C. a是正确的。
*p表示指针p所指向的地址上的值,也就是数组a的第一个元素的值,所以表达式D. *p是正确的。
综上所述,以上所有的表达式都没有错误。