C语言指针基础练习与解析

这篇资源主要是一份关于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语言程序至关重要。
2504 浏览量
553 浏览量
112 浏览量
1144 浏览量
378 浏览量
646 浏览量

hncdbob1
- 粉丝: 2
最新资源
- 精通Microsoft .NET Framework编程
- Hibernate Reference Documentation: 理解与应用指南
- ARM32位嵌入式系统入门教程:LPC2000引领主流趋势
- 局域网组建与维护实战指南:快速入门与资源优化
- C++程序员面试题深度解析:基础与思维挑战
- NASM中文手册:80x86汇编学习资源
- ECMAScript 3rd Edition 官方规范
- Debian GNU/Linux 4.0 i386 安装教程
- FPGA/CPLD入门:理解与优势
- ShowTime:普通用户图像综合平台开发与可行性分析
- 博士论文撰写:经验与创新
- XML在法律法规信息检索中的倒排索引应用研究
- 使用VB.NET与MapObjects创建地图应用教程
- JAVA中文处理常见问题及解决方案详解
- Java通过JDBC连接各种数据库实战指南
- Ubuntu 7.04 安装图解教程