C语言多维数组的指针应用

本文详细介绍了C语言中多维数组的指针应用,从一维数组的指针开始,讨论了数组名作为地址的概念,以及指针变量如何通过算术运算改变地址。接着,文章深入到二维数组,解释了二维数组如何视为一维数组的数组,并分析了指针在二维数组中的运算方式,如arr+1如何指向第二行首元素的地址,以及如何通过指针获取特定元素的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、一维数组

要谈多维数组,首先先了解下一维数组的指针应用。

int arr[10];

通过上述代码,我们定义了一个长度为10的整形数组。
int为数组的基类型,他确定了每个数组元素所占用的空间。在visual studio编译器中int占4个字节。所以arr数组总共占据了40个字节的空间。在数组定义时,数组所需要的空间就已经分配出来了。
arr是数组名。除了用来代表这个数组,他还对应着该数组第一个元素的地址,即arr[0]的地址。也就是说arr == &arr[0]的结果是true。arr还有一些细节方面的东西值得我们注意一下。虽然arr可以用作算术运算,但是arr是一个常数,也就是说你无法改变arr的值,即arr++arr--之类的操作都是无效的(简单的说,arr也是一个指针变量,它的特殊之处在于它存储的地址是无法改变的)。若要完成++类似的操作,就需要用一个指针变量,arr的值赋值给指针变量,即指针变量指向数组的第一个元素。
既然指针是一个变量,那么他的值就可以通过算术运算进行改变。

int *pos;
pos = arr;

通过上述代码,我们定义了一个指向整型数据的指针变量。并且该指针变量内存储的地址恰好是数组的首地址。通过pos + 1我们可以获得数组第二个元素的地址,也就是下标为1的数组元素的地址。pos + 1不是地址加一,而是要看指针变量的基类型,这里的是int类型,所以pos+1它指的是地址加4。即如果pos存储的地址为2000,pos + 1是2004而不是2001。既然pos+1是指向第二个元素的地址,那么如何获取该地址的内容呢?很简单,只需要使用一个符号即可----**(pos + 1)就可以获取到第二个原素了,和arr[1]是等价的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值