*指针与多维数组
- 每一维的数组名为 a[i]。
-
a[i]+1 是 a[i][1] 的地址;a[i]+j 是 a[i][j] 的地址。
*(a[i]+1) 是 a[i][1] 的间接引用形式;*(a[i]+j) 是 a[i][j] 的间接引用形式。 -
a是 a[0] 的地址,a+1 是 a[1] 的地址,a+i 是 a[i] 的地址。
*(a+i) 是 a[i] 的间接引用形式。 -
*(a+i)+1 是 a[i][1] 的地址;*(a+i)+j是 a[i][j] 的地址。
*(*(a+i)+j) 是 a[i][j] 的间接引用形式。 -
行指针:地址 a+i,i 表示指向下 i 行
元素指针:地址 *(a+i)+j,j 表示指向同一行下 j 个元素
1. 有一个3*4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值(使用制表符\t)。
二维数组 a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
#include <stdio.h> int main() { int i,j,a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%d\t",*(*(a+i)+j));//该位置控制制表格式 } if(i==2) { break;//最后一行不换行 } printf("\n");//该位置控制换行输出 } return 0; }
2. 有一个班3名学生,各学4门课程,计算总平均分数以及第3个学生的成绩。
各科成绩如下:
#include <stdio.h> int main() { int i,j; double a[3][4]={65,67,70,60, 80,87,90,81, 90,99,100,98},avg,sum; sum=0.0; for(i=0;i<3;i++) { for(j=0;j<4;j++) { sum=sum+*(*(a+i)+j); } } avg=sum/(3*4); printf("average = %.2f\n",avg); printf("the score of NO.3 are:\n"); for(j=0;j<4;j++) { printf("%.2f",*(a[2]+j)); if(j==3) { break; } printf(" "); } return 0; }
3. 有一个班3名学生,各学4门课程,
查找有一门及以上课程不及格的学生,输出他们的全部课程成绩。
各科成绩如下:
#include <stdio.h> int main() { int i,j,number=0; double a[3][4]={65,57,70,60, 58,87,90,81, 90,99,85,98}; for(i=0;i<3;i++) { for(j=0;j<4;j++) { if(*(a[i]+j)<60) { number++; if(number!=1) { printf("\n"); } printf("No.%d:\n",number); printf("%.1f %.1f %.1f %.1f",*a[i],*(a[i]+1),*(a[i]+2),*(a[i]+3)); break; } } } return 0; }
-END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」