指针和数组的区别是什么?

                                  指针和数组的区别是什么?

其实数组是一个地址,指针则是指向地址的地址。
举个例子:

char array[10];
char *pt;
pt=array;

char array[10];的含义是,在内存里开辟一个10个字节的空间用来存放数据,其中array是这个空间的头地址,正如刚才所说,数组是一个地址。
    
char *pt;的含义是,只是定义一个指针pt,这个指针可以指向任意char型的地址,而指向的地址则存放在地址*pt中,也就是刚才说的指针是指向地址的地址。
    
那么好,pt=array;的意思就是我们把*pt中存放的地址(指针)指向了数组array[10]的头地址array,这个时候pt和array辩证的统一了,区别用通俗的话说就是数组是地名,指针是路牌。但是别忘了,在这个例子中,数组实实在在的占用了10个字节的空间,而指针只占用了4个字节用来存放地址而已(假设是32bits系统)。
    
最后我们总结一下区别:
    
数组:保存数据;直接访问数据;用于存储数目固定且类型相同的数据;由编译器自动分配和删除;自身即为数据名。
指针:保存地址;间接访问数据(先取得指针的内容,然后以它为地址,取得数据);通常用于动态数据结构;动态的分配和删除;通常指向隐式数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

魏波.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值