定义、声明、初始化、赋值的区别
变量声明:
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