数组与指针的比喻

本文以比喻的方式探讨数组和指针在C语言中的联系与区别。数组可以被视为内存中的公寓,指针则是门牌号。数组名代表公寓地址,指针可以指向数组元素。两者的主要区别在于数组地址不可变,而指针可以改变。对数组元素的修改仅影响副本,而通过指针修改字符串字面量可能会导致未定义的行为。
摘要由CSDN通过智能技术生成

数组与指针的比喻

新人小白,初学数组与指针,想要略谈一下两者的联系与区别。

我喜欢用比喻的方式说明问题。

现在,你可以把庞大的电脑内存看作一个世界(类似于我的世界),每个方块都有它的坐标,,每个方块也都有它本身的内容(比如说石头,草块,泥土);这就对应着电脑数据内容的两大要素:数据本身与数据在电脑中的地址。

而数组可以说是电脑为了声明一堆数据而在这个世界中建的公寓,一维数组即为一层公寓,多个房间;二维可以是多层公寓,多个房间;三维就是一个小区了……需要注意的是,这些房子的建设者为了省事儿,把每个房间的大小建设的一样大,房间大小取决于你的你的声明,如果你用int声明,那么你会得到一堆四个格格大小的房间。

而指针就是电脑数据对应的地址,记录的就是每个房间的门牌号。对于一个大小只有四个格格的房间来说,他的门牌号就是第一个格子的坐标,对于一整个数组来说,他的地址就是第一个房间的第一个格子的坐标。

需要注意的是,这里指针加一不是数值加一,而是“门牌号”加一,即直接加了一个房间的格数。如:

#include<stdio.h>
#define SIZE 4
int main()
{
   
	short dates[SIZE];
	short *pti;
	short index;
	double bills[SIZE];
	double *ptf;
	pti = dates;
	ptf = bills;
	printf("%23s %15s\n","short","double");
	for(index=
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值