变量的定义,声明和初始化之问题

采石工 2010-12-17 03:33:11
下面是我总结的一些结论,希望对大家有用。有错误和不足之处,欢迎大家指正和补充!

extern int i;//在全局和局域都是声明
extern int i=1;//在全局是定义,初始化为1;在局域不合法

static int i;//在全局和局域都是定义,且初始化为0
static int i=1;//在全局和局域都是定义,且初始化为1

auto int i;//在全局不合法;在局域是定义,没有初始化
auto int i=1;//在全局不合法;在局域是定义,且初始化为1

register int i;//在全局不合法,在局域是定义,没有初始化
register int i=1;////在全局不合法;在局域是定义,且初始化为1

int i;//在全局是定义,且初始化为1;在局域是定义,没有初始化
int i=1;//在全局和局域都是定义,且初始化为1

如果不加存储类型修饰符,在非全局域定义变量,默认为auto类型,而在全局域定义变量,则默认为extern类型。
...全文
171 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
flysnowhite 2010-12-17
  • 打赏
  • 举报
回复
呵呵,总结的很好。
FrankHB1989 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 quarryman 的回复:]

int i;//在全局是定义,且初始化为1;在局域是定义,没有初始化

[/Quote]

初始化为0。

采石工 2010-12-17
  • 打赏
  • 举报
回复
int i;//在全局是定义,且初始化为1;在局域是定义,没有初始化

这个地方有问题,改为0就可以了
采石工 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mylovezhyl 的回复:]

学习了,有些没碰到过,应该还可以加个const吧!
[/Quote]
你帮我加一下吧,O(∩_∩)O~
东门吹雪 2010-12-17
  • 打赏
  • 举报
回复
学习了,有些没碰到过,应该还可以加个const吧!
cranium 2010-12-17
  • 打赏
  • 举报
回复
接分!

声明 --- 定义 --- 初始化
licaiyuren 2010-12-17
  • 打赏
  • 举报
回复
我之前看一个牛人写的书,就是说声明与定义的区别。。。。

自从那之后,我就不敢随便说定义或者声明一个变量。。。。

后悔中。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧