C语言中数组的升维与降维

前言

据了解,C语言的升维与降维好像是一个经常被提及的问题,仿佛通过测试面试者对这两种操作的理解就可以判断面试者对指针的基本认识。自认为对指针的理解应该已经到位了。那么我们下面就来看看到底什么是数组的降维与升维。


二维数组

升维与降维只存在于高于一维的数组中,我们就以最简单最常用的二维数组作为演示对象来说明什么是数组的降维与升维。下面是我一直以来对二维数组的理解。

float array[3][4]

我们获得了一个二维数组,array是二维数组名,它是指向一个含有四个元素的一维数组的数组指针;array + 1的值是在array当前值的基础上增加了4*sizeof(float);array+1==array[1],它们都是指向第二个一维数组的。*array是指向整个数组的第一个元素的指针,**array是第一个元素的值,&a[0]是指向第一个数组的数组指针。以上便是我对二维数的理解。下面继续介绍什么是升维,什么是降维。

升维

int (*a)[3];
int b[3][3];
a = &b[0];

降维

int *a;
int b[3][3];
a = *(b);

注意点:仔细观察这里的解引用符*和取地址符&的用法与普通的用法在含义上的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值