变量定义和赋值(下)
Posted 10543-yyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量定义和赋值(下)相关的知识,希望对你有一定的参考价值。
1.变量在函数中声明:
①变量往往是在一个时间范围内是有生命的,离开这个范围就会失去生命,释放内存。衡量这个时间范围的在程序中往往就是函数,如大家熟悉的 main 函数。所以变量往往声明在函数中,变量在这个函数中才具有生命,这种变量就称为局部变量。
②而且变量往往只能在函数的开头进行定义,或者说变量定义的前面不能有其它非声明或非定义的语句(遵循C89规范时)。
是不是必须写在最前面是由编译器遵循的规范决定,如果编译器遵循 C89,就必须按照这个规则,如 VC++6.0。如果编译器遵循 C99 规范,变量的申明就是在想用的时候声明即可,没有位置限制。
# include <stdio.h>
int main(void)
{
int i;//声明
i = 3;//赋值
int j = 4; //声明
return 0;
}
---------------------------------------------------------------------
int j = 4;在 C89 规范下运行就会报错,因为前面出现了非声明的语句。实际上遵循 C89 规范,让变量先定义,后使用是一种良好的编程习惯。
2.变量在使用前一定要初始化:
①定义变量的时候给变量进行赋值操作,这就称为初始化。如果不进行初始化就参与运算,这时系统使用的是内存中的垃圾值。
②在 VC++6.0 环境中,如果发现一个变量没有初始化,就认为其中存放的是一个垃圾值,这个数据是没有实际意义的,只是为了提醒用户没有进行初始化,如果是一个整型变量,系统就会将一个很小负数放进去。
③因此任何一个变量在使用之前必须要先对它进行初始化。在实际编程中,习惯上在定义变量的时候就对它进行初始化,这是一个很好的编程习惯。
---------------------------------------------------------------------
#include <stdio.h>
int main()
{
int i;//声明,没有初始化,系统指定一个垃圾值
printf("i = %d
", i);//除站位符%d 外,其余字符原样输出
return 0;
}
这个程序中对变量 i 没有进行初始化,所以会输出一个想不到的系统垃圾值。
3.变量的本质:
①程序在运行过程中,操作系统就会将硬盘上的文件加载到内存中,然后通过 CPU 处理内存里面的数据。所以变量的本质就是内存存储单元。
②实际上,内存里面有很多“小格子”,每个“格子”中只能存放一个 0 或 1。一个“小格子”就是一位,所以“位”要么是 0,要么是 1。8 个“小格子”就是一字节,即一
字节等于 8 位。字节(Byte)是存储数据的基本单位,并且是硬件所能访问的最小单位,这就是一个内存地址。
常见的存储单位主要有 bit(位)、B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)。它们之间主要有如下换算关系:
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
---------------------------------------------------------------------
# include <stdio.h>
int main(void)
{
int i;//变量声明
i = 3;//变量赋值,输入
printf("i = %d
", i);//除站位符%d 外,其余字符原样输出
return 0;
}
---------------------------------------------------------------------
当程序执行 int i;时,它会请求操作系统在内存中寻找一个空闲的存储单元,这个存储单元的大小由数据类型决定(假设 int 的大小为 4 个字节),然后把它
当作变量 i 来使用。也就是说这个存储单元的地址和 i 产生了一种关联。即变量 i 现在就是这个存储单元,然后 i=3;的结果是把 3 按照 32 位二进制位进行
编码,存放到变量 i 所关联的那个 4 个字节的存储单元中。以后只要使用 i,操作系统就会自动找到那个与它关联的存储单元。
③内存数据是可擦除的,当断电后,这些数据就会丢失。
4.变量命名规则 :
如果违背了变量的命名规则,编译时程序就会报错。变量命名要注意以下几个命名规则:
①变量名的开头必须是字母或下划线,不能是数字。
实际编程中最常用的是以字母开头,而以下划线开头的变量名是系统专用的。所以为了避免与系统定义的名字产生冲突,在编程的时候,
永远都不要使用下划线作为一个变量名的开头。
②变量名中的字母是区分大小写的。
③ 变量名绝对不可以是 C 语言关键字,这一点一定要记住!
关键字,就是系统已经使用了的符号,被 C 语言规范赋予特定含义的单词,这些符合都有特殊的作用。
在 C 语言 C89 规范中,只有 32 个关键字,全部都是小写。
int float double char short long signed unsigned if else switch case default
for while do break continue return void const sizeof struct typedef
static extern auto register enum goto union volatile
④变量名中不能有空格。
5.变量命名规范 :
以上是关于变量定义和赋值(下)的主要内容,如果未能解决你的问题,请参考以下文章