c语言学习笔记二:变量

目录

前言

1. 基本数据类型

2. 变量定义

3. 变量赋值

4. 数据溢出

5. 变量的生存周期及作用域

6. 练习


  • 个人主页:c/c++_牵水的博客-CSDN博客
  • 十年嵌入式开发经验
  • 欢迎 点赞✍评论⭐收藏
  • 希望本文能对你有所帮助,欢迎在评论区交流讨论!

 

前言

本章节主要介绍C语言变量

在C语言中,变量用于存储数据值。变量名是在程序中用于标识变量的名称,变量名可以由字母、数字和下划线组成,但不能以数字开头,变量定义时分配相应的内存空间。

在C语言中,变量必须先声明后使用。变量的声明包括变量名和变量类型。变量类型指定变量的数据类型,可以是整数类型、浮点类型、字符类型等

1. 基本数据类型

类型 长度 可变范围
unsigned char 1byte 0到255
char 1byte -128到127
unsigned int 4byte(和系统及编译器相关) 0到4294967295
int 4byte(和系统及编译器相关) -2147483648到2147483647
unsigned long   4byte(和系统及编译器相关) 0到4294967295
long 4byte(和系统及编译器相关) -2147483648到2147483647
float 4byte -3.4E+38到3.4E+38
double 8byte -1.79E+308到+1.79E+308
*(指针类型) 4byte(和系统及编译器相关)  

 字符型和整型支持用unsigned修饰;float类型及double类型不支持用unsigned修饰。

2. 变量定义

 在C语言中,变量必须先声明后使用。变量的声明包括变量名和变量类型。变量名在程序中应该是唯一的,不能与C语言的保留字相同。变量类型指定变量的数据类型,可以是整数类型、浮点类型、字符类型等。例如:

int age; //定义了一个整数类型的变量age
float salary; //定义了一个浮点类型的变量salary
char grade; //定义了一个字符类型的变量grade
 

3. 变量赋值

 变量的赋值是将一个值赋给一个已经声明的变量。例如:

age = 25; //将25赋给变量age
salary = 5000.50; //将5000.50赋给变量salary
grade = 'A'; //将字符‘A’赋给变量grade
 

变量的值可以在程序执行期间改变,也可以初始化赋值。例如:

int num = 10; //定义了一个整数类型的变量num并初始化为10
int result; //定义了一个整数类型的变量result
result = num + 5; //将num+5的结果赋给变量result
num = 20; //将变量num的值改为20
 

4. 数据溢出

赋值时需要注意数据的异常,否则将达不到预期效果,例如:

#include
int main()
{
	unsigned char result = 0;
	unsigned int num = 1000;

	result = num;
	printf("num=%u,result=%u\n", num, result);

    return 0;
	
}
运行结果:num=1000,result=232

5. 变量的生存周期及作用域

变量的作用域是指在程序中访问变量的有效范围。它决定了在哪些地方可以使用变量,以及变量在不同位置的值是否可见。
变量的作用域通常分为以下几种类型:
全局作用域(Global scope):在整个程序中都可以访问的变量。它在程序开始运行时创建,直到程序结束时才会销毁。
局部作用域(Local scope):仅在特定代码块或函数中可访问的变量。它在代码块或函数被执行时创建,当代码块或函数结束时销毁。
块级作用域(Block scope):在某个代码块中定义的变量,只能在该代码块内访问。块级作用域通常指的是由花括号({})包围的语句块,比如if语句、for循环等。
函数作用域(Function scope):在函数中定义的变量,只能在该函数内部访问。函数作用域是指变量在函数体中的可见性范围。
作用域规则的主要目的是避免变量名冲突和提高代码的可读性。在同一个作用域中,变量名必须是唯一的,否则可能会导致命名冲突和意外的结果。
当在程序中引用一个变量时,编程语言会按照一定的规则搜索符号表来确定该变量的作用域和值。如果找不到对应的变量,可能会引发编译错误或运行时错误。

 

变量的生存周期是指变量存在的时间。在程序中,变量的生存周期可以分为以下几个阶段:

  1. 声明阶段:变量被声明时开始其生存周期。

  2. 初始化阶段:变量被初始化时,其值被赋予,该阶段可以省略。

  3. 在作用域内的生存周期:变量在其作用域内存在,可被引用和修改。

  4. 出作用域的生存周期:当变量所处的作用域结束时,变量会被销毁。在函数内,变量在函数结束时销毁;在全局作用域中,变量在程序结束时销毁。

需要注意的是,如果变量在函数中被分配在堆上,则其生存周期不仅仅限于函数内。在这种情况下,变量只有在手动释放内存或系统垃圾回收时才会被销毁。

全局变量的生存周期是指在程序运行期间始终存在的变量。全局变量在程序启动时被创建,在程序结束时被销毁,作用域为全局作用域。

#include
unsigned int num = 1000; //全局变量,作用域为整个程序运行期间
void fun()
{
    unsigned int result = 0; //局部变量,作用域仅仅在fun函数中
    result = num;
    printf("fun, num=%u, result=%u\n", num, result);
}

int main()
{
    fun();
	printf("main, num=%u\n", num);

    return 0;
}

fun, num=1000, result=1000
main, num=1000

 作用域也可以被改变,后面会有专门的章节介绍!

6. 练习

  1. 编写一个程序,要求用户输入一个半径,并计算并输出圆的面积和周长。

 

从零开始学习C语言今天就分享到这里啦!希望各位多多点赞收藏评论!!!

 

你可能感兴趣的:(c/c++,c语言,arm开发)