C语言基础知识点

1. C语言的基本结构

C语言程序一般分为以下几个部分:
1> 引用头文件:用于引入外部的功能和库。
2>声明变量:告诉计算机需要用哪些数据并为它们分配空间。
3>定义函数:把特定的任务分成一个个小单元,以便程序可以有条不紊地执行。
4>编写主函数 main():程序从这里开始运行。

1.1 引用头文件

#include         // 引入单片机寄存器相关的头文件
#include            // 引入按键相关的驱动文件
#include            // 引入数码管相关的驱动文件

[解释]

  • #include 是C语言的预处理命令,它告诉编译器在编译当前文件之前,应该先将所引用的文件内容添加进来。  
  • <> "" 的区别:<> 表示引用的是标准库头文件,而 "" 则用于引用自定义头文件。

使用标准库时可能看到类似的代码:

#include    // 引入标准输入输出库,用于控制台输入输出

 stdio.h 包含了处理输入输出的函数,如 printf() 和 scanf()

1.2 声明变量

unsigned char Key_Val, Key_Down, Key_Old;             // 存储按键状态的变量
unsigned char Key_Slow_Down;                          // 控制按键反应速度的变量
unsigned char Seg_Buf[6] = {10, 10, 10, 10, 10, 10};  // 数码管显示的数据
unsigned char Seg_Pos;                                // 控制数码管的显示位置
unsigned int Seg_Slow_Down;                           // 控制数码管更新速度的变量
  • 变量类型:在C语言中,声明一个变量时必须指定它的类型,这决定了它可以存储的值和内存大小。 

unsigned char:表示无符号的字符类型变量,大小为1字节,能存储0-255之间的整数。
unsigned int:表示无符号整数,通常为2个字节,存储范围为0-65535。

  • 数组:例如 Seg_Buf[6] 是一个大小为6的数组,数组是一种数据结构,它可以存储一组相同类型的数据。可以通过索引访问每个元素,例如 Seg_Buf[0] 访问数组的第一个元素。

 示例:

int a = 10;       // 声明一个整型变量a并赋值为10
float b = 3.14;   // 声明一个浮点数b并赋值为3.14
char c = 'A';     // 声明一个字符变量c并赋值为字符'A'

1.3 定义函数

函数是C语言中的基本模块化单位,能够封装一组操作,可以在任何地方调用。函数的定义形式如下:

返回类型 函数名(参数列表)
{
            // 函数体
}

例1

void Key_Proc()
{
    if(Key_Slow_Down) return;    // 如果按键减速标志为真,直接返回
    Key_Slow_Down = 1;           // 将按键减速标志设为1
    Key_Val = Key_Read();        // 读取按键值
    Key_Down = Key_Val & (Key_Old ^ Key_Val);  // 检测按键下降沿
    Key_Old = Key_Val;           // 保存当前按键状态
}

 函数的基本组成
1>返回类型:在定义一个函数时,需要指定该函数的返回类型。void 表示该函数没有返回值;如果函数返回一个整数值,则返回类型是 int
2>函数名Key_Proc() 是函数的名字。你可以根据需要给函数起名,但函数名应该具备一定的可读性,反映出该函数的用途。
3>参数列表:可以为空,也可以包含多个参数,参数用于传递数据到函数中处理。
4>函数体:函数中实际执行的代码,包含在花括号 {} 中。

例2

int add(int a, int b) 
{
    return a + b;   // 返回两个整数的和
}

调用这个函数:

int c = add(5, 3);  // result的值为8

1.4 编写主函数 main()

在C语言程序中,main() 是程序的入口,每个C程序都必须包含一个 main 函数。所有的程序执行都从 main 函数开始。

void main()
{
    Timer0Init();   // 调用定时器初始化函数
    while (1)       // 无限循环
    {
        Key_Proc();   // 按键处理函数
        Seg_Proc();   // 数码管处理函数
        Led_Proc();   // LED处理函数
    }
}

[解释]

  • main 函数的定义:void main() 表示 main 函数不返回任何值,函数体中包含了程序的逻辑。
  • while(1):这是一种常见的无限循环结构。while 是一个循环语句,括号内的条件为 1,表示永远为真,因此会不断重复执行循环体中的代码。
  • 函数调用:Key_Proc()Seg_Proc()Led_Proc() 是之前定义的函数,在 main 函数中多次调用它们以实现重复的功能处理。

2. C语言中的数据类型

2.1 基本数据类型

C语言是一种强类型语言,这意味着每个变量都必须声明一个类型。C语言的常见数据类型有:

  • 整型 (int):用于存储整数,如 1, -5, 1000 等。整型变量占据4个字节的存储空间。

例:

int a = 100;  // 声明一个整型变量并赋值为100
  • 字符型 (char):用于存储单个字符,如 'a', 'B'。字符型变量占据1个字节的存储空间,实际上它是整数类型,用于存储ASCII码。

  例:

char letter = 'A';  // 声明一个字符型变量并赋值为'A'
  • 浮点型 (float):用于存储带小数的数字,如 3.14, -0.001。浮点型占据4个字节的存储空间。

  例:

float pi = 3.14;  // 声明一个浮点型变量并赋值为3.14
  • 双精度浮点型 (double):与 float 类似,但精度更高,通常占据8个字节。

2.2 常量与变量

  • 常量:程序中不可改变的值,例如数字 5、字符 'a' 等。常量可以通过 const 关键字定义。

  例:

const int MAX = 100;  // 定义一个不可改变的整型常量MAX
  • 变量:可以在程序中变化的值,变量在使用前必须声明其类型并初始化。

3. 运算符

C语言中的运算符用于对变量和常量进行计算和逻辑操作。

3.1 算术运算符

 +:加法运算符,用于计算两个数的和。
 - :减法运算符,用于计算两个数的差。
 * :乘法运算符,用于计算两个数的乘积。
 / :除法运算符,用于计算两个数的商。
%:取余运算符,用于求两个数相除后的余数。

例:

int a = 10, b = 3;
int sum = a + b;  // 结果为13
int diff = a - b; // 结果为7
int prod = a * b; // 结果为30
int quotient = a / b; // 

结果为3
int remainder = a % b; // 结果为1

3.2 关系运算符 

==:等于,用于判断两个值是否相等。
!=:不等于,用于判断两个值是否不相等。
>:大于,用于判断左边的值是否大于右边。
<:小于,用于判断左边的值是否小于右边。
>=:大于等于。
<=:小于等于。

例:

if (a == b) {
    // 如果a等于b,则执行这里的代码
}

if (a != b) {
    // 如果a不等于b,则执行这里的代码
}

3.3 逻辑运算符 

&&:逻辑与,只有当两个条件都为真时,结果才为真。
||:逻辑或,只要有一个条件为真,结果就为真。
!:逻辑非,将一个条件的值取反。

 例:

if (a > 5 && b < 10) {
    // 只有当a大于5且b小于10时,才执行这里的代码
}

if (a > 5 || b < 10) {
    // 只要a大于5或者b小于10,就执行这里的代码
}

if (!a) {
    // 如果a为假,则执行这里的代码
}

 

 4. 条件判断

C语言中最常用的条件判断语句是 if-else。通过 if 语句可以根据条件的真假来决定是否执行某段代码。

例:

if (a > b) {
    // 如果a大于b,执行这里的代码
} else {
    // 否则,执行这里的代码
}

此外,还有 else if,用于添加多个条件:

例:

if (a > b) {
    // 如果a大于b,执行这里的代码
} else if (a == b) {
    // 如果a等于b,执行这里的代码
} else {
    // 如果a小于b,执行这里的代码
}

 

5. 循环

C语言提供了多种循环结构,用于重复执行某段代码。最常用的循环有三种:for 循环,while 循环,和 do-while 循环。

 5.1 for 循环

for 循环是C语言中最常用的循环结构。它的格式为:

for (初始化; 条件; 更新) 
{
    // 循环体
}

 例:

for (int i = 0; i < 10; i++)
{
    printf("%d\n", i);  // 输出0到9
}


5.2 while 循环

while 循环在每次迭代前检查条件,只有当条件为真时,才执行循环体。

例:

int i = 0;
while (i < 10) {
    printf("%d\n", i);  // 输出0到9
    i++;  // 更新i的值
}

5.3 do-while 循环

do-while 循环至少执行一次循环体,因为条件是在循环体执行之后才检查的。

例:

int i = 0;
do {
    printf("%d\n", i);  // 输出0到9
    i++;
} while (i < 10);

 

6. 注释

注释是C语言中的一种非代码部分,专门给程序员阅读,不会影响程序运行。它用于解释代码的功能或逻辑,使代码更加易于理解。

  • 单行注释:以 // 开头,表示后面的内容都是注释,直到该行结束。

  例:

  // 这是一个单行注释
  int a = 10;  // 这里的注释解释了变量a的作用
  • 多行注释:用 /* 开头,*/ 结束,注释可以跨多行。

  例:

  /* 这是一个多行注释
     用于解释较复杂的代码逻辑 */
  int b = 20;

 

7. 总结

通过以上内容,基本了解了C语言中的核心概念和基础语法,包括:
1. 数据类型:学会如何声明和使用变量。
2. 运算符:掌握了基本的算术和逻辑运算符。
3. 条件判断:通过 if 和 else 语句进行条件判断。
4. 循环结构:学会使用 forwhile 和 do-while 进行循环操作。
5. 函数:理解了函数的定义和调用,帮助代码模块化。
6. 注释:学会如何使用注释来提升代码的可读性。

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