2013年8月27日

C语言指针类型 强制转换

摘要: 关于C语言指针类型 强制转换 引用一篇文章:C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检查一个值的位来判断它的类型。例如,定义如下:int a;float b;double c;long double d;(假设它们所占的字节分别是4、8、8、10,而且连续存储于某个地址空间,起始地址是100,则我们可以得到如下内存分布)a变量... 阅读全文

posted @ 2013-08-27 18:03 Arts&Crafts 阅读(4103) 评论(0) 推荐(1) 编辑

C语言字符数组越界现象

摘要: 今天在用C的过程中发现一个奇怪的现象。代码如下:char chs[2];chs[0] = 'a';chs[1] = 'b';printf("%c\n", chs[2]);结果 输出 是 a。在网上查了一下.有个网友是这样回答的:“我们定义一个变量,实际上是向操作系统申请一段内存。比如上述程序的char a[10],系统会给它分配一段连续的内存块用来存放数据。这个内存块是随机的,它可以是目前空闲的任意一个内存段。由于这个不确定性,所以它后面的内存块有两种可能:如果恰好这段内存的后面的内存段没有被其他程序占用,那么我们对它进行使用是不会出错的。就 阅读全文

posted @ 2013-08-27 17:19 Arts&Crafts 阅读(246) 评论(0) 推荐(0) 编辑

导航