定义、声明、初始化、赋值的区别

变量声明:

extern int a;//只声明一下这个变量,会在别处定义的

变量定义:

int a;//说明该变量在内存中的位置和大小,声明加定义

变量初始化:

int a = 7;//定义时给变量一个值

变量赋值:

a=2;//把变量原有的值擦除,重新给一个值

C 中的左值(Lvalues)和右值(Rvalues)
C 中有两种类型的表达式:
左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

初始化局部变量和全局变量
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化,如下所示:

数据类型
初始化默认值

int                     0
char                    ''
float                   0
double                  0
pointer                 NULL

正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,因为未初始化的变量会导致一些在内存位置中已经可用的垃圾值。

 

图来自知乎:https://www.zhihu.com/question/27639400 淡北戴河

————————————————
版权声明:本文为CSDN博主「午后阳光温暖一冬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34866146/article/details/81027577

posted @ 2020-04-30 09:08  sgggr  阅读(555)  评论(0编辑  收藏  举报