漫谈C指针:C语言变量的实质

可以把内存看成电影院座位
服务器君一共花费了278.004 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

要理解C指针,我认为一定要理解C中“变量”的存储实质,所以我就从“变量”这个东西开始讲起吧。

先来理解理解内存空间吧。请看下图:

如上图所示,内存只不过是一个存放数据的空间,就好像我的看电影时的电影院中的座位一样。电影院中的每个座位都要编号,而我们的内存要存放各种各样的数据,当然我们要知道我们的这些数据存放在什么位置吧。所以内存也要象座位一样进行编号了,这就是我们所说的内存编址。座位可以是遵循“一个座位对应一个号码”的原则,从“第1号”开始编号。而内存则是按一个字节接着一个字节的次序进行编址,如上图所示。每个字节都有个编号,我们称之为内存地址。好了,我说了这么多,现在你能理解内存空间这个概念吗?

我们继续看看以下的C/C++语言变量声明:

int i;
char a;

每次我们要使用某变量时都要事先这样声明它,它其实是内存中申请了一个名为i的整型变量宽度的空间(DOS下的16位编程中其宽度为2个字节),和一个名为a的字符型变量宽度的空间(占1个字节)。

我们又如何来理解变量是如何存在的呢。当我们如下声明变量时:

int i;
char a;

内存中的映象可能如下图:

图中可看出,i在内存起始地址为6上申请了两个字节的空间(我这里假设了int的宽度为16位,不同系统中int的宽度可能是不一样的),并命名为i。a在内存地址为8上申请了一字节的空间,并命名为a。这样我们就有两个不同类型的变量了。

延伸阅读

此文章所在专题列表如下:

  1. 漫谈C指针:C语言变量的实质
  2. 漫谈C指针:变量赋值与取地址
  3. 漫谈C指针:指针是什么东西
  4. 漫谈C指针:指针与数组
  5. 漫谈C指针:声明指针常量
  6. 漫谈C指针:从const int i说起
  7. 漫谈C指针:const int *pi的语义
  8. 漫谈C指针:参数传递的三道题目
  9. 漫谈C指针:参数的值传递
  10. 漫谈C指针:参数的地址传递
  11. 漫谈C指针:参数的引用传递
  12. 漫谈C指针:回顾指针概念
  13. 漫谈C指针:指向另一指针地址的指针
  14. 漫谈C指针:一个指针应用实例
  15. 漫谈C指针:函数名其实也是指针
  16. 漫谈C指针:函数调用的指针写法
  17. 漫谈C指针:定义函数的指针类型
  18. 漫谈C指针:函数指针作为函数参数使用

本文地址:http://www.nowamagic.net/librarys/veda/detail/2119,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/2119

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《编程之美:微软技术面试心得》 《编程之美》小组 (作者)

《编程之美:微软技术面试心得》是一本让人着迷的书!阅读起来。有些题目的内容会引起强烈的共鸣,尤其是那些自己非常熟悉并且又深知解答的题目;也有一些题目让我异常惊诧,原来除了我所知道的解答思路之外,还有更好的解答以及更深层次的原因。还有一些题目是从来没想到过的。阅读过程是一次愉快的享受,也是脑细胞持续活跃的过程。

更多计算机宝库...