C语言语法知识体系速览

前言

本文旨在辅助快速了解/复习C语言基础知识,构建总体知识框架,所涉及的知识较浅,更加具体详细的知识需要查阅具体章节的文章

一、基础框架

C程序由预处理指令、函数和语句构成。基本结构如下:

#include <stdio.h>  // 头文件引入(如标准输入输出库)

int main(void) {     // 主函数入口

    printf("Hello World!\n"); // 语句以分号结尾

    return 0;        // 返回值

}

- 编译过程:预处理→编译→汇编→链接 。

- 固定代码:main()函数是程序执行的起点,return 0表示正常退出 。

二、数据类型与变量

1.基本数据类型

类型关键字示例
整型intint a = 10;
浮点型floatfloat b = 3.14;
字符型charchar c = 'A';
双精度浮点型doubledouble d = 5.0;

2. 变量与常量

- 变量声明:int width, height;

- 常量:用const修饰或宏定义(#define PI 3.14)。

- 作用域:局部变量(函数内)与全局变量(文件内)。

三、控制语句

1. 分支结构

- if-else:支持嵌套和多条件判断。

if (num % 2 == 0) {

    puts("偶数");

} else if (num > 0) {

    puts("正奇数");

} else {

    puts("负数");

}

- switch:处理多分支场景(需配合break)。

switch (num % 3) {

    case 0: printf("余0"); break;

    case 1: printf("余1"); break;

    default: printf("余2");

}

2. 循环结构

- for:适合已知循环次数。

#include <stdio.h>
int main() {
    // 示例1:打印0-9的整数 
    for (int i = 0; i < 10; i++) {
        printf("%d ", i); // 输出:0 1 2 3 4 5 6 7 8 9 
    }
 
    // 示例2:计算1-100的和 
    int sum = 0;
    for (int j = 1; j <= 100; j++) {
        sum += j;
    }
    printf("\n1-100的和:%d\n", sum); // 输出:5050 
    return 0;
}

- while/do-while:适合不确定次数(如输入验证)。

#include <stdio.h>
int main() {
    // 示例:输入正整数,倒数至0 
    int num;
    printf("输入一个正整数:");
    scanf("%d", &num);
    while (num >= 0) {
        printf("%d ", num);
        num--; // 递减操作 
    }
    printf("\n"); // 输入5时输出:5 4 3 2 1 0 
    return 0;
}
#include <stdio.h>
int main() {
    // 示例:强制用户输入正数 
    int input;
    do {
        printf("请输入一个正数:");
        scanf("%d", &input);
        if (input <= 0) {
            printf("输入错误!\n");
        }
    } while (input <= 0); // 输入负数时重复提示 
    printf("输入成功:%d\n", input);
    return 0;
}

四、数组

1. 一维数组

int arr[5] = {1,2,3}; // 未初始化的元素默认为0

printf("%d", arr[0]); // 输出1

2. 多维数组

int matrix[2][3] = {{1,2}, {3,4}}; // 二维数组

五、函数

1. 定义与调用

int add(int a, int b) { // 函数定义

    return a + b;

}

int result = add(3,5);  // 调用函数

2. 参数传递

- 值传递:形参是实参的副本。

- 指针传递:通过地址修改实参(见指针章节)。

六、指针

1. 基本概念

int num = 10;

int *p = &num    // p指向num的地址

printf("%d", *p); // 输出10

2. 指针与数组

int arr[3] = {1,2,3};

int *p = arr;     // p指向数组首地址

printf("%d", *(p+1)); // 输出2

七、结构体

1. 定义与使用

struct Student {    // 定义结构体

    char name[20];

    int age;

};

struct Student s1 = {"Alice", 20}; // 初始化

printf("%s", s1.name);             // 访问成员

2. 结构体指针

struct Student *ps = &s1;

printf("%d", ps->age); // 使用->访问成员

八、库函数

1. 标准I/O函数

- printf/scanf:格式化输入输出 。

int num;

scanf("%d", &num);  // 读取整数

printf("值:%d", num);

- puts/gets:字符串输出(自动换行)。

2. 字符串处理

#include <string.h>

char str1[10] = "Hello";

char str2[10];

strcpy(str2, str1); // 复制字符串

代码实例整合

示例1:计算矩形面积

#include <stdio.h>

int main() {

    int width, height;

    puts("输入长和宽:");

    scanf("%d%d", &width, &height);

    printf("面积:%d\n", width * height);

    return 0;

}

示例2:结构体与函数

#include <stdio.h>

typedef struct {    // 使用typedef简化类型名

    int x, y;

} Point;

void printPoint(Point p) {

    printf("坐标:(%d,%d)", p.x, p.y);

}

int main() {

    Point p1 = {3,4};

    printPoint(p1);

    return 0;

}

示例3:一套完整的C语言语法复习代码

#include <stdio.h>

//函数声明(函数原型)
int calculate_sum(int a, int b);
void print_array(int* arr, int size);

//结构体定义(复合数据类型)
struct Student {
	char name[20];
	int age;
	float score;
};

int main() {
	/*基础数据类型与输入输出*/
	int num = 10;
	float pi = 3.14159f;
	char ch = 'A';

	printf("基本数据类型示例:\n");
	printf("整数:%d 浮点数:%.2f 字符:%c\n\n", num, pi, ch);

	/*条件语句*/
	int a = 15, b = 20;
	if (a > b) {
		printf("%d 大于 %d\n", a, b);
	}
	else {
		printf("%d 小于等于 %d\n\n", a, b);
	}

	/*循环结构*/
	printf("for循环示例(1-5):\n");
	for (int i = 1; i <= 5; i++) {
		printf("%d ", i);
	}

	printf("\n\nwhile循环示例(5-1):\n");
	int j = 5;
	while (j > 0) {
		printf("%d ", j--);
	}
	printf("\n\n");

	/*数组与指针*/
	int arr[] = { 10,20,30,40,50 };
	int* ptr = arr;
	printf("数组元素通过指针访问:\n");
	for (int k = 0; k < 5; k++) {
		printf("arr[%d]=%d ", k, *(ptr + k));
	}
	printf("\n\n");

	/*函数调用*/
	int sum = calculate_sum(a, b);
	printf("函数计算%d+%d=%d\n\n", a, b, sum);

	/*结构体使用*/
	struct Student stu = { "Alice", 18, 89.5 };
	printf("学生信息:\n姓名:%s\n年龄:%d\n成绩:%.1f\n", stu.name, stu.age, stu.score);

	return 0;
}
//函数定义:计算两数之和
int calculate_sum(int x, int y) {
	return x + y;
}
//函数定义:打印数组
void print_array(int* arr, int size) {
	for (int i = 0; i < size; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
}

输出结果:

基本数据类型示例:                                                                                                      
整数:10 浮点数:3.14 字符:A                                                                                           
                                                                                                                        

15 小于等于 20                                                                                                          
                                                                                                                        
for循环示例(1-5):                                                                                                    
1 2 3 4 5                                                                                                               
                                                                                                                        
while循环示例(5-1):                                                                                                  
5 4 3 2 1                                                                                                               
                                                                                                                        
数组元素通过指针访问:                                                                                                  
arr[0]=10 arr[1]=20 arr[2]=30 arr[3]=40 arr[4]=50                                                                       
                                                                                                                        
函数计算15+20=35                                                                                                        
                                                                                                                        
学生信息:                                                                                                              
姓名:Alice                                                                                                             
年龄:18                                                                                                                
成绩:89.5    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值