C语言指针使用
一、指针基础概念
指针本质上是一个存储内存地址的变量。通过指针,我们可以直接访问和操作内存中的数据。
int var = 10; // 普通整型变量
int *ptr = &var; // ptr是指向var的指针
二、指针的常见应用场景
1. 动态内存分配
指针最常见的用途是动态内存管理:
int *arr = (int*)malloc(10 * sizeof(int)); // 分配10个整型空间
if(arr != NULL) {// 使用分配的内存free(arr); // 释放内存
}
2. 函数参数传递
指针可以实现"按引用传递":
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}int main() {int x = 5, y = 10;swap(&x, &y); // 交换x和y的值return 0;
}
3. 数组与指针的关系
数组名本质上是指向数组首元素的指针:
int arr[5] = {1,2,3,4,5};
int *p = arr; // 等价于 p = &arr[0]
4. 字符串处理
C语言中字符串通常用字符指针表示:
char *str = "Hello World";
char str2[] = "Hello";
三、指针使用注意事项
- 空指针检查 :使用前检查指针是否为NULL
- 野指针问题 :指针指向已释放的内存
- 内存泄漏 :忘记释放分配的内存
- 指针运算 :确保指针运算在合法范围内
int *ptr = NULL;
if(ptr != NULL) {*ptr = 10; // 安全访问
}