C语言指针基础练习与解析
5星 · 超过95%的资源 需积分: 44 96 浏览量
更新于2024-11-06
1
收藏 71KB DOC 举报
这篇资源主要是一份关于C语言指针的基础练习题,适合初学者进行自我检测和提升。通过这些题目,学习者可以更好地理解和掌握C语言中的指针概念及其运用。
1. 这道题考察了指针和解引用的概念。选项A表示`*p`等于`a`的值,即8,这是正确的;选项B表示`p`指向`a`的地址,也是正确的;选项C表示`*a`(即`a`的值)与`*p`相等,同样正确;选项D中的`*&a`是对`a`的地址取地址,而`&*a`相当于`a`的地址,因此选项D也是正确的。
2. 题目中`short a[2]`定义了一个包含两个元素的短整型数组,`p`初始化为指向`a[0]`的地址。执行`p++`后,`p`将指向`a[1]`,所以指针`p`的值应该是`2002`,因此答案是C。
3. 数组`a`的第二个元素可以通过`a[1]`、`p[1]`、`*(p+1)`来表示,但`*p+1`是错误的,因为它首先解引用`p`得到`a[0]`的值,然后加1,而不是偏移地址到`a[1]`。因此答案是C。
4. 变量`a`可以通过`*&a`、`*p`、`**q`来表示,但是`*q`仅表示`p`的值,即`a`的地址,而不是`a`本身,因此答案是C。
5. 语句`int *p[10], (*q)[10];`中,`p`是一个包含10个指向整型变量的指针的数组,而`q`是一个指向包含10个整型变量数组的指针。因此,答案是D,即④、③。
6. 定义了二维数组`a`和指针`p`,执行`p++`后,`p`指向第二行的第一个元素,因此`**p`代表的元素是85,答案是D。
7. 执行语句后,`p`指向字符串"abcd"的首地址,`(p+4)`指向字符数组末尾的空字符`\0`,因此答案是B。
8. `*(*(p+2)+1)`表示访问数组`a`的第三行第二个元素,即`a[2][1]`,其值为50,因此答案是C。
9. 程序中`p`是一个指向数组的指针数组,`*p[1]`和`(*p)[1]`都是获取第一行的第二个元素,即4,`p[3][2]`是第四行的第三个元素,即9,`*(p[3]+1)`是第四行的第二个元素,即11。所以输出应为`4,4,9,11`,答案是C。
10. A选项是错误的,因为`s[4]`只能容纳4个字符,而"abcde"有5个字符;B选项是危险的,因为`s`未初始化,`gets`可能会导致缓冲区溢出;C选项是正确的,它声明了一个指向字符的指针,并且可以用来存储字符串。
通过这些题目,学习者可以深入理解指针在C语言中的基本操作,包括指针的赋值、解引用、数组和指针的关系、指针数组以及多级指针的使用等。这些知识点对于编写C语言程序至关重要。
2021-09-30 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
hncdbob1
- 粉丝: 2
- 资源: 1
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍