单选题
1、第57题 (1.0分) 题号:558 int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是()。
A
2
B
3
C
4
D
不一定
答案解析
正确答案:B
解析:
**解析:**
1. **数组初始化分析**:
代码 `int a[10]={1,2,3,4,5,6,7,8};` 定义了一个长度为 10 的整型数组 `a`。
根据 C 语言规则,未显式初始化的元素自动补 0。因此数组 `a` 的内容如下:
* `a[0] = 1`
* `a[1] = 2`
* `a[2] = 3`
* `a[3] = 4`
* `a[4] = 5`
* `a[5] = 6`
* `a[6] = 7`
* `a[7] = 8`
* `a[8] = 0`
* `a[9] = 0`
2. **指针赋值分析**:
语句 `p = &a[5];` 将指针 `p` 指向数组 `a` 的第 6 个元素(下标为 5 的元素)。
此时,`p` 指向的值是 `6`,即 `*p == a[5] == 6`。
3. **指针运算分析**:
表达式 `p[-3]` 等价于 `*(p - 3)`。
* `p` 指向 `a[5]`。
* `p - 3` 表示指针向前移动 3 个 `int` 单位的位置。
* 从下标 5 向前移动 3 位,对应的下标为 $5 - 3 = 2$。
* 因此,`p[-3]` 等同于访问 `a[2]`。
4. **最终结果**:
查看数组初始化内容,`a[2]` 的值为 **3**。
故正确答案为 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第202题 (1.0分) 题号:527 全局变量的定义不可能在()。
单选题
1、第201题 (1.0分) 题号:95 下列变量说明语句中,正确的是()。
单选题
1、第200题 (1.0分) 题号:88 下列字符序列中,可用作C标识符的一组字符序列是()。
单选题
1、第199题 (1.0分) 题号:598 下列四组选项中,均不是C语言关键字的选项是()。
单选题
1、第198题 (1.0分) 题号:530 C程序中的宏展开是在()。
单选题
1、第197题 (1.0分) 题号:554 从键盘上输入某字符串时,不可使用的函数是()。
单选题
1、第196题 (1.0分) 题号:519 int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
单选题
1、第195题 (1.0分) 题号:168 若输入ab,程序运行结果为()。
单选题
1、第194题 (1.0分) 题号:549 若有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为()。
单选题
1、第193题 (1.0分) 题号:120 假设所有变量均为整型,表达式:a=2,b=5,a>b?a++:b++,a+b的值 是()。
