C语言笔试基础选择题专项训练(进阶版)2026年.docxVIP

  • 0
  • 0
  • 约5.14千字
  • 约 9页
  • 2026-08-20 发布于河北
  • 举报

C语言笔试基础选择题专项训练(进阶版)2026年.docx

C语言笔试基础选择题专项训练(进阶版)2026年

第一部分:指针与内存管理进阶

1.关于以下代码的输出结果,下列说法正确的是?

printf(%d,%d

,(a+1),(ptr-1));

`a`是数组名,代表数组首元素地址,类型为`int`。`a`是整个数组的地址,类型为`int(*)[5]`。

*`a+1`指向数组末尾之后的位置(即跳过整个数组的大小)。

`ptr`被强制转换为`int`,指向数组最后一个元素`a[4]`之后的内存位置。

`(a+1)`等价于`a[1]`,值为2。

*`ptr-1`指向`ptr`前一个`int`的位置,即`a[4]`,值为5。

*答案:A

2.下列代码中,`p`和`q`的关系描述正确的是?

printf(%d

,q-p);

C.未定义行为,因为访问了数组越界地址

解析:

*在C语言标准中,指向数组末尾下一个位置的指针(one-past-the-endpointer)是合法的,常用于循环终止条件。

*`q`指向`arr[10]`(即数组末尾后一个位置),`p`指向`arr[0]`。

*指针相减的结果是两个指针之间元素的个数,即`10-0=10`。

*虽然`q`指向

文档评论(0)

1亿VIP精品文档

相关文档