【C语言】 二维数组的地址
# 分析

- *s+8为:第九个数的地址
- *(s+1)+3为:*(第二行的地址)+3 --> 从第二行的地址开始往后第4个数的地址
- *(*s+8)为:*(第九个数的地址) --> 9
- *(*(s+1)+3)为:*(从第二行的地址开始往后第4个数的地址) --> 9
- 可以看出*有两个含义,一个取值,一个是步长。
# 代码
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int s[4][5]={{1,2,3,4,5},
6 {6,7,8,9,10},
7 {11,12,13,14,15},
8 {16,17,18,19,20}};
9 int (*ps)[5]=s;
10 for(int i=0;i<4;i++)
11 {
12 for(int j=0;j<5;j++)
13 {
14 printf("%p ",&s[i][j]);
15 }
16 printf("\n");
17 }
18 printf("\n");
19 printf("%p, %p, %p\n",s,*s,&s);
20 printf("%p, %p, %p\n",s+1,*s+1,&s+1); //步长分别为:行,逐个元素,整个数组
21 printf("%p, %p\n",*s+8,*(s+1)+3);
22 printf("%d, %d\n",*(*s+8),*(*(s+1)+3));
23 return 0;
24 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!