int var = 10;
int *ptr = &var; // &取地址操作
二、七大核心应用场景动态内存管理
int *arr = malloc(10*sizeof(int));
if(arr) {
arr[0] = 100;
free(arr); // 必须配对使用
arr = NULL; // 避免野指针
}
高效数组操作
char str[] = "Hello";
char *p = str;
while(*p) putchar(*p++); // 指针遍历
函数参数传递(传址调用)
void swap(int *a, int *b) {
int tmp = *a; // 解引用修改原始值
*a = *b;
*b = tmp;
}
字符串处理
char *reverse(char *s) {
char *end = s + strlen(s) - 1;
while(s < end) {
char tmp = *s;
*s++ = *end;
*end-- = tmp;
}
return s;
}
结构体操作
typedef struct {
int x;
int y;
} Point;
Point p1 = {1,2};
Point *pp = &p1;
printf("(%d,%d)", pp->x, (*pp).y); // 两种访问方式
函数指针
int compare(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int arr[] = {5,3,9,1};
qsort(arr, 4, sizeof(int), compare);
}
多级指针管理
void alloc_matrix(int ***mat, int rows, int cols) {
*mat = malloc(rows * sizeof(int*));
for(int i=0; i<rows; i++)
(*mat)[i] = calloc(cols, sizeof(int));
}
三、关键注意事项野指针防范:指针释放后立即置NULL类型安全:避免void*的滥用运算陷阱:指针加减以类型大小为步长内存泄漏检测:使用等工具const限定:区分const int与int const
指针的灵活运用能显著提升程序性能,但需牢记:能力越大责任越大。掌握指针需要理解计算机内存模型calloccalloc,建议通过绘制内存图来辅助理解复杂指针操作。
还是那句话:干中学,学中干
限时特惠:本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情
站长微信:Jiucxh
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。