指针是 C 语言中非常强大的特性,它不仅仅用于基本的变量访问,还能用于许多高级的编程技巧。指针的进阶用法涉及到一些比较复杂的概念,比如动态内存分配、指针与函数、指针与结构体、指针与数组、指向指针的指针等。在这部分,我们将深入探讨这些高级用法。
1. 动态内存分配
C 语言允许在程序运行时动态地分配内存。通过使用 malloc
、calloc
、realloc
等函数,程序可以在运行时为数据结构分配内存,而不是事先确定大小。
1.1 malloc
和 free
malloc
(memory allocation)用于动态分配内存,而 free
用于释放动态分配的内存。
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
// 动态分配内存,分配 5 个整数的空间
ptr = (int*) malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed\n");
return 1;
}