C语言知识点(3)------指针和数组

对于刚刚接触指针的来说,有一个误区,
“数组和指针是相同的”
1、指针和数组定义
int *x;
int y[7];
extern int *y;(会报错)
很直接的说明了编译器不承认指针 = 数组。

int i = 1;
extern int i;
(extern 用来告诉编译器该对象已经被定义类型和名字,本文件可以使用)
在这里插入图片描述

2、数组和指针如何访问
首先我们应该分清楚“地址”“地址内容”,可以这么理解,地址相当于寝室号,地址内容相当于寝室里面的实物(床、柜子等等)。我们寻找一个实物需要根据对应地址来查找。
因此要注意不可以在指针不清楚指向地址的情况下给指针赋值。
初始化指针:在定义指针的时候告诉指针地址。或者直接把地址赋值给指针。
在这里插入图片描述

然后我们在对指针操作过程中,需要注意:p是一个地址(门牌号),*是读一个地址的数(取实物),这两个结合起来就得到 *p(数)(实物)。数组这个变量在定义的时候,编译器已经为其分配了地址和下标。所以我们可以直接通过数组名和下标(也可以叫偏移量)来读取数据。
在这里插入图片描述

数组和指针都可以通过对首地址的数据读取然后对其进行偏移来确定其他值。所以我们可以按照数组的方式来访问指针,按照指针的偏移来访问数组但是相比于指针,数组的优点就是可以根据下标直接读取后面数据,不用偏移,但是缺点也显而易见,从一开始就分配好的内存,相比于指针,浪费了很多空间,而且对数据大小变通的灵活性也低。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值