易截截图软件、单文件、免安装、纯绿色、仅160KB

【C\C++语言入门篇】 数组与指针

前面一篇我们介绍了指针,相信大家对指针不再是那么陌生,虽然在一些大胆的指针强制类型转换上有的读者还不习惯。但是至少大家心里有个数,指针式如此的灵活,以至于你可以操作得比较底层或者根本越过一些语法的限制。这可能也是众多程序员抨击CC++不安全的因素之一。安不安全不是本文想要表达的,这里只需要记住一点,如果你有足够把握,那么你绝对可以毫不犹豫的运用。
本文依然不会离开指针的影子,前面一篇还有没介绍完的,之前本来想在前面一篇介绍,但是发现在本篇介绍更适合一些。数组和指针可以说是两家亲,很多初学的读者对这两者的概念模棱两可。他们之间有什么联系和区别也是很多初学的读者最希望明白的,本文就为解决这个困扰,让指针和数组进一步加深。还是记住我们的出发点,以发散的思维去理解去联想。注重思考过程,这个过程最终只需要用程序来表达而已。
首先还是看看什么是数组,数组即是一段连续的空间(内存空间)。从这句话中,我们可以注意到数组其实就是一段空间,而且还是连续的。好了,此时对数组的基本特征就有个大致的了解了。那么内存空间是怎么样表达出来的呢?很简单:
int    a[ 100 ];
char szName[ 16 ];
这两句即为数组了,在这里a为一个拥有100个int类型元素的数组。在这里我们也可以理解int并不是数组a的类型,而是数组内部元素的类型。它表示数组内部每个元素都是32有符号整数。这样想来便联系到了指针,int* p; p代表它指向的内存地址里存放的数据是int型的。第二个szName同理也表示其每个元素的类型就是char型。这样理解对指针数组和数组指针有帮助,先放这里容后介绍。
这里a和szName并没有被初始化,那么它们里面每个元素的值我们可以认为是乱码。也就是说是随便填充的一些值。当然为什么填充这些值也是有道理的,在不同的平台可能填充的值不一样。在windows下通常被填充成类似0xcdcdcdcd或者0xcccccccc之类的。这些值在汇编层面上去理解会更直接,在这里我们就认为它是随便填充的一些值吧。就认为这些值对于我们正常的程序是没有什么用处的。
从程序表现上我们已经知道数组的声明,那么怎么跟指针联系和区别呢?先贴代码:
int* p = a;   // 这里a使用上面的a[ 100 ]数组。
我们从前一篇只可以知道,这时指针p指向了数组a的首地址,这里直接将a赋值给了p。那么可以断定这个数组名a即是代表数组的首地址。既然代表的是首地址,那么a可以看成是一个指向这1


相关文档:

用C写的3D迷宫

          Boss说,要看OpenGL,看了快一个月,总算出了个像样的东西,用C写了个3D迷宫,
虽然只有350行
       代码,不过边学边写,足足写了一周时间,还是小有成就感的,活活活!
         &n ......

从C++到JAVA,C++程序员学习JAVA的指南

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
讨论新闻组及文件
Technorati 标签: JAVA
,C++
,Python
JAVA is not just another programming language. -- 匿名
学习更新的语言,有助于了解别人对旧语言有哪些不满。 -- 匿名
 
前言

说明本文的行文习惯,文章写作流程以本人阅读《Java Progra ......

彻底理解C、C++、Win32与COM中的字符串

C/C++中的字符串问题在网上的讲解一向非常含糊,存在各个层次的库混用、滥用的情况,尤其是宽字符与窄字符等问题很难找到有效的资料,本篇随笔分享一下我长期收集到的一些比较准确的资料以及据此得到的个人理解.
C语言中的字符串
C语言中提供了两种字符类型char和wchar_t,C语言使用字符数组来表示字符串,同时支持两种直 ......

c程序实现香农编码

#include <stdio.h>
#include <math.h>
#include <string.h>
int i,j,n,k,b;
float addp;
char bitw[20];
/*初始化结构体其中:s为信源符号;p为信源符号概率;padd为累加概率;
l_f为-log[p(s[i])]即估计码字长度;l为实际需要码字长度;w为码字*/
 struct shan
 {char s[20];
&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号