浅析C语言中指针与数组

浅析C语言中指针与数组


最近几天忙着准备复试,就开始学习C语言(以前本科阶段就从C++学起,对C了解不深入)


复习几天就看到了指针和数组又开始头痛了(学C++的时候就没有深入了解),不过发现看多了也就觉得还是那么回事。


个人通过学习总结如下


1.数组就是相当于把类型相同的东西归为一类并进行编号。数组名保存的是该数组第一个元素的地址
譬如我们学校教室就有三个类型(分为小、中、大三类),假设各位10个(当然实际比这个多很多),则
我们可以将其定义为数组 short A[10](小教室),int B[10](中教室), long C[10](大教室);
假设小教室的编号分别为01101(一教一楼的第一个教室),01102,...,01110; 
中教室的编号分别为02101(二教一楼的第一个教室),02102,...,02110; 
大教室的编号分别为03101(三教一楼的第一个教室),03102,...,03110; 
则A存放的地址信息即为01101,B、C则对应地址02101、03101
即&A[0] = 01101,&A[1] = 01102,...,&A[9] = 01110;
即&B[0] = 02101,&B[1] = 02102,...,&B[9] = 02110;
即&C[0] = 03101,&C[1] = 03102,...,&C[9] = 03110;
但到此每个变量用于存放的值我们却不知道,假如我们用每个教室容纳上课的人数来表示存放的值,
我们可以假设 A[0] = 60,A[1] = 60,...,A[9] = 60;
B[0] = 120,B[1] = 120,...,B[9] = 120;
C[0] = 200,C[1] = 200,...,C[9] = 200;
这样我们就可以通过地址知道每个教室可以容纳的人数了,
即*&A[0] = 60,*&A[1] = 60,...,*&A[9] = 60;
即*&B[0] = 120,*&B[1] = 120,...,*&B[9] = 120;
即*&C[0] = 200,*&C[1] = 200,...,*&C[9] = 200;
注意: 当这里的地址已经分配之后就不可以更改!




2.指针就相当于保存地址的信息,对于各类型的教室,我们就可以定义如下
short *a; int *b; int *c;
a = A; b = B; c = C;
则此时a = &A[0] = 01101, b = &B[0] = 02101, c = &C[0] = 03101;
*a = A[0] = 60, *b = B[0] = 120, *c = C[0] = 200;
如何此时 a++; 则a = &A[1] = 01102; *a = A[1] = 60;
注意: 指针存储的地址信息是可以改变的!




以上则是本人近期学习指针和数组的总结,如有什么错误和不足之处,还希望各位博主指出和探讨。


如需转载,请注明,谢谢。


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值