C语言习题:打印M字符与结构体引用
需积分: 24 107 浏览量
更新于2024-07-13
收藏 282KB PPT 举报
在C语言习题中,我们遇到两个主要的话题:字符数组的访问与结构体指针的使用。
1. 字符数组访问:
题目要求找到能打印出字母M的语句。在这个结构体定义`struct person`中,每个成员`name`是一个字符数组。选项① `printf(“%c”, c[3].name);`试图打印`c`数组中第四个元素(索引从0开始)的名字,但直接打印整个名字可能不会输出"M",因为`name`通常是全名,而不是单个字符。选项② `printf(“%c”, c[3].name[1]);`打印的是`name`的第二个字符,由于`c[3]`代表"Mary",所以这会打印"M"。选项③ `printf(“%c”, c[2].name[1]);` 和④ `printf(“%c”, c[2].name[0]);` 分别尝试打印`Paul`和`Mary`的第二个字符,前者为'l',后者为'y',均不会得到"M"。
2. 结构体指针:
在第二个问题中,`struct sk`包含成员`a`和`b`,`data`是这个结构体的实例,而`*p = &data`将`p`指向`data`的地址。① `(*p).data.a`试图通过指针间接访问`data`的`a`成员,但实际上应该去掉`.`,因为`*p`已经指向了结构体,所以应该是`(*p).a`。选项②是正确的引用。③ `p->data.a`也是正确的语法,通过箭头操作符`->`访问结构体成员。④ `p.data.a`是错误的,因为没有使用解引用运算符`*`,`p`本身不是一个结构体变量。
总结起来,这两道题目考察了C语言中基本的数据结构和指针操作,特别是如何正确地访问数组元素和结构体成员。理解字符数组的索引和指针的使用是解答此类问题的关键。对于第一个问题,选项②是打印"M"的正确语句;对于第二个问题,正确的引用方式是选项②或③。同时,理解指针和结构体的关联对于高级编程至关重要。
2022-02-06 上传
2018-10-16 上传
2022-11-15 上传
2022-11-13 上传
2014-12-07 上传
2014-08-15 上传
2021-10-11 上传
2023-06-02 上传
2021-09-27 上传
VayneYin
- 粉丝: 23
- 资源: 2万+
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器