您的位置:首页 > 编程语言 > C语言/C++

浅析C语言中指针与数组

2014-10-07 16:19 204 查看
浅析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;

注意: 指针存储的地址信息是可以改变的!

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

如需转载,请注明,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: