同志们,给大家分享个好东西; 能力测试: 1.用指针数组处理一个二维数组,要求求出二维数组所有元素的和。 #include <stdio.h> int main(void) { int a[2][3]={{1,2,3},{4,5,6}}; int *pa[2]={a[0],a[1]},i,j; int sum=0; for(i=0;i<2;i++) { 在IT领域,指针是C/C++编程语言中极其重要的概念。指针允许我们存储内存地址,进而直接访问和操作内存中的数据。本题库主要针对指针的使用进行了多种题目的设置,涵盖了一维、二维数组以及结构体等与指针相关的知识点。 1. **指针数组处理二维数组**: 在给定的描述中,提到了如何用指针数组处理二维数组来求和。`int a[2][3]`定义了一个2x3的二维数组,`int *pa[2]`是一个指向一维数组(即二维数组的一行)的指针数组。通过`pa[0]=a[0]`和`pa[1]=a[1]`,将二维数组的每一行的首地址存入指针数组中。之后,可以通过`for`循环遍历指针数组,以此间接遍历二维数组的所有元素并求和。 2. **选择题知识点解析**: - 题目1:题目中`p=a+i`表示`p`指向字符串`a`的第`i`个字符,`p-3`返回`p`前三个字符的地址,因此输出为'6789'。 - 题目2:`char *line[5];`定义了一个包含五个`char`类型指针的数组,每个元素可以指向一个字符。 - 题目3:`*p=*q;`等同于`n2=n1;`,因为`p`和`q`都是指向整数的指针,`*p`表示解引用取值。 - 题目4:`*p`表示解引用`p`,即得到`x`的值,因此输出是0。 - 题目5:`*p + *q`计算的是数组`a`中索引3和5的元素之和,即`5+7=12`,但输出是`b`(ASCII码10)后的下一个字符,即`10+2=12`的ASCII码,即`'\n'`,所以输出是空行。 - 题目6:程序通过`p`遍历整个数组`a`,`p`指向`a[0][0]`,`for`循环结束后,`a[1][0]`到`a[1][2]`都被赋值为0,1,2,所以输出`234`。 - 题目7:正确字符串赋值方式是`char *sp="right!";`,因为`sp`是一个指针,可以直接指向字符串常量。 - 题目8:`(*p).n ++`将结构体数组`a`的第一个元素的`n`值加1,初始为5,加1后变为6。 - 题目9:程序通过指针成员互相连接了两个结构体,`p`指向第一个结构体,`h[0].p->x`就是`h[1].x`,值为3,`(h[1].p)->y`是`h[0].y`,值为2,所以输出是`32`。 - 题目10:`sum`是所有学生的成绩之和,`for`循环遍历结构体数组`s`,累加每个学生所有科目的分数,总和是270分。 - 题目11:动态分配内存创建链表,`p->num=10`、`q->num=20`和`r->num=30`分别设置了三个节点的数值,链表构建后没有输出部分,所以这部分未给出具体答案。 这些题目涵盖了指针的基础概念,包括指针变量的声明、初始化,指针数组的使用,指针与数组、结构体的结合,以及动态内存分配等方面的知识。通过解答这些题目,可以深入理解指针的灵活性和在实际编程中的应用。
剩余22页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助