以下是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];
}