C语言 基础语法大全详解

C语言基础语法是编程学习的核心内容,涵盖数据类型、变量常量、运算符、控制结构、函数、指针、数组与字符串等模块。以下为分模块详解:


1. 数据类型

  • 基本类型
  • 整型int(4字节)、short(2字节)、long(4/8字节)、long long(8字节),支持signed(默认)和unsigned修饰。
  • 浮点型float(单精度,7位有效数字)、double(双精度,15-17位有效数字)、long double(扩展精度)。
  • 字符型char(1字节),存储ASCII码,可参与整数运算。
  • 构造类型
  • 数组:连续内存存储同类型数据,如int arr[5]
  • 结构体:自定义复合类型,如struct Point { int x; int y; };
  • 联合体:共享内存的复合类型,如union Data { int i; float f; };
  • 枚举:符号常量集合,如enum Week { MON, TUE };

2. 变量与常量

  • 变量:需声明类型,如int a = 10;,支持全局(静态存储)和局部(动态存储)。
  • 常量
  • const修饰:const int PI = 3.14;
  • #define宏定义:#define PI 3.14(无类型检查)。
  • 字符串常量:"Hello"(末尾自动加\0)。

3. 运算符

  • 算术运算符+-*/%(取模)。
  • 关系运算符==!=><>=<=
  • 逻辑运算符&&(与)、||(或)、!(非)。
  • 位运算符&(按位与)、|(按位或)、^(异或)、<<(左移)、>>(右移)。
  • 赋值运算符=+=-=等复合赋值。
  • 条件运算符a > b ? a : b(三目运算符)。
  • 其他sizeof(计算类型/变量大小)、,(逗号表达式)。

4. 控制结构

  • 条件语句
  • if-else:多分支判断。
  • switch-case:多值匹配,需break避免穿透。
  • 循环语句
  • forfor (int i = 0; i < 10; i++)
  • while:先判断后执行。
  • do-while:先执行后判断。
  • 跳转语句
  • break:退出循环/switch
  • continue:跳过当前迭代。
  • goto:无条件跳转(慎用)。

5. 函数

  • 定义返回值类型 函数名(参数列表) { 函数体; },如int add(int a, int b) { return a + b; }
  • 调用int sum = add(2, 3);
  • 参数传递:值传递(默认)和指针传递(修改实参)。
  • 递归:函数调用自身,需终止条件。

6. 指针

  • 定义int *p;(指向整型的指针)。
  • 操作
  • 取地址:&a
  • 解引用:*p
  • 指针运算:p++(移动指针指向下一个元素)。
  • 用途:动态内存分配、数组操作、函数参数传递。

7. 数组与字符串

  • 数组
  • 一维:int arr[5] = {1, 2, 3};
  • 二维:int matrix[3][3]
  • 字符串:以\0结尾的字符数组,如char str[] = "Hello";

8. 预处理指令

  • 头文件包含#include <stdio.h>
  • 宏定义#define PI 3.14
  • 条件编译#ifdef DEBUG

9. 动态内存管理

  • 分配mallocvoid*类型,需强制转换)、calloc(初始化清零)。
  • 释放free

10. 输入输出

  • 格式化输出printf("Value: %d", a);
  • 格式化输入scanf("%d", &a);
  • 文件操作fopenfclosefreadfwrite

11. 编码规范

  • 命名规则
  • 变量/函数:小写字母+下划线(如student_age)。
  • 常量:全大写+下划线(如MAX_SIZE)。
  • 注释:单行//,多行/* */
  • 缩进:4空格或Tab。

示例代码

#include <stdio.h>

int main() {
    int a = 10, b = 20;
    printf("Sum: %d\n", a + b); // 输出:Sum: 30
    return 0;
}

总结

C语言基础语法是编程的基石,需通过大量实践(如算法题、小项目)巩固。理解指针、内存管理和函数设计是进阶的关键。建议结合《C Primer Plus》等经典书籍深入学习。

发布日期:
分类:C语言 标签:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注