C语言入门(十五)--二维数组、二级指针

一、二维数组

1、定义

类型说明符 数组名[常量表达式1][常量表达式2]
比如说定义一个三行四列的数组a: float a[3][4]
特点
一个数组中的元素类型是一维数组的一维数组,类似于数学中的矩阵

上述二维数组a
a[0]----a[0][0]   a[0][1]   a[0][2]   a[0][3]
a[1]----a[1][0]   a[1][1]   a[1][2]   a[1][3]
a[2]----a[2][0]   a[2][1]   a[2][2]   a[2][3]

存储顺序

...
a00
a01
a02
a11
a23

2、代码实现

#include <stdio.h>

int main(){
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	printf("%d\n", sizeof(a)); // 二维数组的大小
	printf("%d\n", a[2][3]); // 最后一个元素
	return 0;
}

3、调试看元素存放顺序

Debugger
在内存视图中可以看到,从1-12是按照顺序排放的,所以赋值时也可以依次赋值
在这里插入图片描述
在这里插入图片描述
说明内存视图是16进制

二、二级指针

1、定义

二级指针的作用是服务于一级指针变量,对一级指针变量实现间接访问

2、代码实现

#include <stdio.h>

int main(){
    int i=10;
    int *p=&i;
    // 一级地址的指针变量给了二级指针
    int **p2=&p;
    printf("sizeof(p2)=%d\n",sizeof(p2));
    printf("**p2=%d\n",**p2);
    return 0;
}

3、原理解析

i=10;
假设`i`的地址是0x0001;
p=&i; p中存的值时`i`的地址,即p=0x0001;
假设p的地址是0x0002;
p2=&p; p2中存的值时`p`的地址,即p2=0x0002;
此时 `*p2` 拿到的值是`p`中存储的`i`的地址;
`**p2`拿到的才是`i`的值
~~
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_努力_strive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值