当前位置: 首页 > news >正文

C语言基础学习指南第二章:核心语法与函数——从函数定义到实战项目,助你快速掌握C语言核心能力

目录

1. 函数的定义与调用

2. 数组与字符串操作

3. 指针基础

4. 动态内存管理

5. 综合项目实战


1. 函数的定义与调用

1.1 函数的基本结构
函数由返回值类型、函数名、参数列表和函数体组成。例如:

int get_max(int x, int y) {  
    return (x > y) ? x : y;  
}  

1.2 函数的声明与调用
若函数定义在main()之后,需提前声明:

int get_max(int, int);  // 声明  
int main() {  
    int a = 10, b = 20;  
    printf("Max: %d\n", get_max(a, b));  // 调用  
    return 0;  
}  

1.3 习题与编译结果
题目:编写一个递归函数factorial,计算阶乘。
示例代码

#include <stdio.h>  
int factorial(int n) {  
    return (n == 0) ? 1 : n * factorial(n - 1);  
}  
int main() {  
    int num = 5;  
    printf("%d! = %d\n", num, factorial(num));  
    return 0;  
}  

编译结果

5! = 120

2. 数组与字符串操作

2.1 一维数组
数组用于存储同类型数据,例如:

int numbers[5] = {1, 2, 3, 4, 5};  

2.2 字符串处理
字符串本质是字符数组,常用strcpystrlen等库函数:

#include <string.h>  
int main() {  
    char str1[20] = "Hello";  
    char str2[20] = "World";  
    strcpy(str1, str2);  // 复制字符串  
    printf("%s\n", str1);  // 输出 "World"  
    return 0;  
}  

2.3 习题与编译结果
题目:编写函数reverse_string,反转字符串。
示例代码

#include <string.h>  
void reverse_string(char *str) {  
    int len = strlen(str);  
    for (int i = 0; i < len / 2; i++) {  
        char temp = str[i];  
        str[i] = str[len - i - 1];  
        str[len - i - 1] = temp;  
    }  
}  
int main() {  
    char str[] = "C语言";  
    reverse_string(str);  
    printf("%s\n", str);  // 输出 "言语C"  
    return 0;  
}  

编译结果

言语C

3. 指针基础

3.1 指针与内存地址
指针存储变量的地址,例如:

int a = 10;  
int *ptr = &a;  // ptr指向a的地址  

3.2 指针作为参数
通过指针修改实参的值:

void swap(int *x, int *y) {  
    int temp = *x;  
    *x = *y;  
    *y = temp;  
}  
int main() {  
    int a = 5, b = 10;  
    swap(&a, &b);  
    printf("a=%d, b=%d\n", a, b);  // 输出 "a=10, b=5"  
    return 0;  
}  

3.3 习题与编译结果
题目:编写函数sum_array,计算整数数组的和。
示例代码

#include <stdio.h>  
int sum_array(int *arr, int size) {  
    int sum = 0;  
    for (int i = 0; i < size; i++) {  
        sum += arr[i];  
    }  
    return sum;  
}  
int main() {  
    int arr[] = {1, 2, 3, 4, 5};  
    printf("Sum: %d\n", sum_array(arr, 5));  // 输出 "Sum: 15"  
    return 0;  
}  

编译结果

Sum: 15

4. 动态内存管理

4.1 mallocfree
动态分配和释放内存:

int *arr = (int *)malloc(5 * sizeof(int));  // 分配5个整数的空间  
free(arr);  // 释放内存  

4.2 习题与编译结果
题目:编写动态数组,输入5个数字后输出。
示例代码

#include <stdio.h>  
#include <stdlib.h>  
int main() {  
    int n = 5;  
    int *arr = (int *)malloc(n * sizeof(int));  
    for (int i = 0; i < n; i++) {  
        scanf("%d", &arr[i]);  
    }  
    printf("输入的数字:");  
    for (int i = 0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    free(arr);  
    return 0;  
}  

编译结果(输入:1 2 3 4 5):

输入的数字:1 2 3 4 5 

5. 综合项目实战

5.1 计算器程序
实现加减乘除功能:

#include <stdio.h>  
void add(int a, int b) { printf("%d\n", a + b); }  
void subtract(int a, int b) { printf("%d\n", a - b); }  
// ... 其他运算函数  
int main() {  
    int choice, a, b;  
    while (1) {  
        printf("选择操作:1-加 2-减 3-退出\n");  
        scanf("%d", &choice);  
        if (choice == 3) break;  
        scanf("%d %d", &a, &b);  
        switch (choice) {  
            case 1: add(a, b); break;  
            case 2: subtract(a, b); break;  
            // ... 其他case  
        }  
    }  
    return 0;  
}  

5.2 学生成绩管理系统
实现录入、查询、排序功能(需结合结构体与数组)。


学习建议

  1. 每日完成1-2个习题,通过调试工具(如GDB)观察变量变化。
  2. 参考网页中的经典题目强化练习。
  3. 尝试将函数模块化,提升代码复用性。

相关文章:

  • 优化 Flink 消费 Kafka 数据的速度:实战指南
  • Windows10配置C++版本的Kafka,并进行发布和订阅测试
  • Linux文件系统与磁盘存储
  • 什么是 Cloud Studio DeepSeek ; 怎么实现Open WebUI快速体验
  • 小结:策略路由(Policy-based Routing,PBR)
  • 《Keras 3 : 使用迁移学习进行关键点检测》:此文为AI自动翻译
  • 23.1 WebBrowser控件
  • 推荐几款SpringBoot项目手脚架
  • DDD架构实战:用Java实现一个电商订单系统,快速掌握领域驱动设计
  • 对象(Object)和数组(Array)的区别
  • DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)
  • 什么AGI
  • OpenGL开发杂谈
  • Python:property装饰器的作用
  • Python--数据类型(下)
  • 【mysql80 安装】mysql8.0.31 安装修改3306端口
  • 【个人开源】——从零开始在高通手机上部署sd(一)
  • Python开源项目月排行 2024年12月
  • 数据结构与算法:奇校验与偶校验
  • 机器视觉3D中,深度图与点云图数据对比分析
  • 媒体谈平台帮商家“拉黑”客户:平台治理需兼顾商家与消费者权益
  • 阳朔兴坪镇:在建乾元桥“垮塌”是谣言,系降雨导致工程挡土墙倾斜
  • 上海国际电影电视节 | 奔赴电影之城,开启光影新程
  • 香港油麻地旧警署将向游客开放
  • 国家话剧院上海演出季7月重启,《大宅门》等5部大戏来沪
  • 中国首次当选联合国教科文组织1970年《公约》缔约国大会主席国