变量定义与声明的区别

终于明白了 札记如下
声明:告诉编译器变量的类型 在哪里 或者函数的特征(返回值 参数类型 个数)
定义:告诉编译器 在此处分配存储空间 建立变量和函数

同一变量定义只有一个(干嘛要多处分配空间呢 内存很宝贵的~)
但是可以声明多次

变量有点混淆--
int a; 是个声明 也是个定义
extern int a; 只是声明
所以声明包含定义,有足够的信息让编译器建立变量的声明 就是一个定义
为了让int a;不是定义(别给a分配空间) 前面加extern吧
(所以 extern int a=1;是要出错的 --BB)

函数很清楚--
声明就是没有函数体的 定义则有
事实上函数声明前本来也要加extern的 但是可以省略 因为大家都很懒 谁想多打字呢?

end~

附送 程序内存简介

一个由c/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack) 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、全局区(静态区)(static),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放

4、文字常量区 常量字符串就是放在这里的。 程序结束后由系统释放

5、程序代码区存放函数体的二进制代码。

posted on 2007-12-11 00:56 BenWhite 阅读(1490) 评论(0)  编辑 收藏 引用 所属分类: 编程体会

只有注册用户登录后才能发表评论。

公告

导航

<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

留言簿(7)

随笔分类(244)

文章分类(7)

友情链接

最新随笔

积分与排名

最新评论

阅读排行榜

评论排行榜