C语言变量的定义和声明有啥不同?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言变量的定义和声明有啥不同?相关的知识,希望对你有一定的参考价值。

参考技术A

C语言变量的定义和声明的不同之处:

1、变量在使用前就要被定义或者声明;

2、在一个程序中,变量只能定义一次,却可以声明多次;

3、定义分配存储空间,而声明不会

扩展资料:

变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在程序中,变量有且仅有一个定义。     

声明:用于向程序表明变量的类型和名字。

定义也是声明:当定义变量的时候我们声明了它的类型和名字。可以通过使用extern声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern。     

extern声明不是定义,也不分配存储空间。事实上它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。     

只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern。     

任何在多文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。

shell变量与C语言变量之间在用法上有啥区别

参考技术A C语言变量有确定的类型,一般需要初始化,否则值是不确定的。未经特别声明,默认作用域是局部的(局部变量)。
shell变量类型不固定,赋值为什么类型的数值,它就是什么类型的。可以不初始化,后面用的时候直接赋值,问题不大。shell变量在脚本中默认都是全局变量。
参考技术B 《UNIX 超级工具》一书 第八章
8.05 命令行的评价(evaluation)
下面是C shell 解释命令行的顺序:
1. 历史替换
2. 分裂词(包括特殊字符)
3. 更新历史表
4. 解释单引号(') 和 双引号(")
5. 别名替换
6. 输入和输出的重定向(如 > < 和 |)
7. 变量替换
8. 命令替换
9. 文件名扩展
(Bourne shell 的解释顺序本质上是一样的,除了它不执行历史替换和别名替换之外)

以上是关于C语言变量的定义和声明有啥不同?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中,声明和定义有啥区别

c语言中函数定义和声明有啥区别

C语言中的.c和.cpp有啥区别?

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置有啥不一样?

在C语言中float 与int 有啥不同

c语言中的extern是啥,有啥作用啊?