c语言变量

时间:2025-03-08 10:06:34

                 第四次课-----变量
一、变量的定义
变量的概念:值可以发生改变的量
语法:类型名 变量名,变量名,变量名;
      类型名 变量名 = 初值,变量名 = 初值;
      char a,b,c;
      int e;
      char a = 0,b = 0,c = 0;
      char a = 0;
      unsigned char e = 0;
      int height = 170;
      int weight = 0;
注意:
1.变量名以字母、数字、下划线构成且第一个字符不能是数字
char 8lirenchong;//错误的,数字不能作为第一个字符
char hua guoyong;//错误的,有空格
char hua_guo_yong;//正确的
char lirenchong8;//正确的
int a*b;//错误的,*不符合标识符命名规范
int ab&c;//错误的,&不符合标识符命名规范
int _ab;//正确的
//变量名的字母分大小写,ab和AB不是同一个变量名
int ab;
int AB;

2.变量要先定义再使用
a = 45;//错误,a要先定义再使用
char a;

3.变量是占据内存的,占据的内存大小由变量的数据类型决定
char a;//a占据1byte
unsigned char g;//g占据1byte
int b;//b占据4byte
unsigned int bc;//bc占据4byte
short int e;//e占据2byte
long int lint;//lint占据4byte
long long int llint;//llint占据8byte
float f;//f占据4byte
double d;//d占据8byte

4.同一个作用域下,不能重复定义变量名
char a;
char a;//错误,重复定义变量a

5.变量的本质就是一块内存空间,变量名就是这块内存的名字,通过变量名对内存进行写或者读。
变量的赋值(写操作)和变量的输出(读操作):

int main(void)
{    
    char a,b;
    a = 45;//把45赋值给a
          //(把45写入a的内存块中)
    b = a;//先读出a的值(45),再把45赋值给b
      //(把45写入b的内存块中)
    printf("a:%d,b:%d\n",a,b);//把a和b的值读出来
    return 0;
}

6.要养成给变量赋初值为0的习惯
int a = 0;//在变量定义时,给变量赋值叫赋初值
a = 0;//不是赋初值,这叫赋值

7.定义变量时要根据需求来确定数据类型,防止“溢出”(超出取值范围)
int main(void)
{
    char a = 0;
    a = 128;//错误,超出了a的取值范围
    return 0;

8.单词、关键字、标识符的区别
语句由单词构成
单词:
    关键字:在vs2013中蓝色的单词,如int
    标识符:
    自定义标识符:自己定义的标识符,如char abc中的abc
    预定义标识符:系统已经定义好的标识符,如printf 

int main(void)
{
    unsigned char height = 0;
    printf("");
    return 0;
}
C语言的标识符命名规范:由字母、数字、下划线构成且第一个字符不能是数字,且不能是系统占用的单词。
int main(void)
{
    int float = 0;//错误的,float是关键字
    int printf = 0;//错误的,printf是预定义标识符
    int weight = 0;//正确的
    printf("");
    return 0;
}

9.作用域:一个代码空间
分类:
文件作用域:从文件头到文件尾的代码空间

函数作用域:函数的参数和函数体属于函数作用域,函数的返回值和函数名属于文件作用域

语句块作用域:后面讲解
结构体作用域:后面讲解

#include <>

char height = 0;//height属于文件作用域
int main(void)//main属于文件作用域
{
    char a = 0;//a属于函数作用域
    char b = 0;//b属于函数作用域
    a = 45;
    return 0;
}
int foot(int size)//foot属于文件作用域,size属于函数作用域
{
    char a = 0;//a属于函数作用域
}

在同一个作用域内,不能出现相同的标识符
int foot(void)
{
    int a = 0;
}
void foot(void)//错误,函数名不能相同
{
    char a = 0;
}

一个标识符不能同时属于两个作用域,使用就近原则  
#include <>
char height = 10;//height属于文件作用域
int main(void)
{
    char height = 12;//height属于函数作用域
    printf("%d\n",height);//使用的是函数里面的height,结果:12
    return 0;
}