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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注