C语言实战

以下是C语言实战中常见的应用场景和解决方案,涵盖基础到进阶内容:

变量与数据类型

整型、浮点型、字符型变量的声明与初始化:

复制代码
int count = 10;
float price = 9.99f;
char grade = 'A';

结构体和联合体的使用:

复制代码
struct Point {
    int x;
    int y;
};
union Data {
    int i;
    float f;
};

内存管理

动态内存分配与释放:

复制代码
int *arr = (int*)malloc(10 * sizeof(int));
free(arr);

内存操作函数示例:

复制代码
char src[50] = "Hello";
char dest[50];
memcpy(dest, src, strlen(src)+1);

文件操作

文本文件读写:

复制代码
FILE *f = fopen("data.txt", "w");
fprintf(f, "%d %f", 100, 3.14);
fclose(f);

二进制文件处理:

复制代码
struct Record r;
FILE *bin = fopen("data.bin", "rb");
fread(&r, sizeof(struct Record), 1, bin);

数据结构实现

链表节点定义:

复制代码
typedef struct Node {
    int data;
    struct Node* next;
} Node;

栈的基本操作:

复制代码
#define MAX 100
int stack[MAX];
int top = -1;

void push(int item) {
    if(top >= MAX-1) return;
    stack[++top] = item;
}

算法实现

快速排序示例:

复制代码
void quickSort(int arr[], int left, int right) {
    if(left >= right) return;
    int i = left, j = right;
    int pivot = arr[(left+right)/2];
    while(i <= j) {
        while(arr[i] < pivot) i++;
        while(arr[j] > pivot) j--;
        if(i <= j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++; j--;
        }
    }
    quickSort(arr, left, j);
    quickSort(arr, i, right);
}

多线程编程

POSIX线程创建:

复制代码
#include <pthread.h>
void* thread_func(void* arg) {
    printf("Thread running\n");
    return NULL;
}

pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
pthread_join(tid, NULL);

网络编程

TCP客户端示例:

复制代码
#include <sys/socket.h>
#include <netinet/in.h>

int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr = {
    .sin_family = AF_INET,
    .sin_port = htons(8080),
    .sin_addr.s_addr = inet_addr("127.0.0.1")
};
connect(sock, (struct sockaddr*)&addr, sizeof(addr));

调试技巧

使用gdb基本命令:

复制代码
gcc -g program.c -o program
gdb ./program
break main
run
print variable

性能优化

循环展开示例:

复制代码
// 原始循环
for(int i=0; i<100; i++) { sum += arr[i]; }

// 展开4次
for(int i=0; i<100; i+=4) {
    sum += arr[i];
    sum += arr[i+1];
    sum += arr[i+2];
    sum += arr[i+3];
}
相关推荐
地平线开发者2 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮2 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者3 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考3 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx6 小时前
CART决策树基本原理
算法·机器学习
Wect6 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱7 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway14 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风14 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect14 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript