遇到指针别害怕!先把这篇笔记看一遍~("轻松掌握指针:先读这篇笔记,告别恐惧!")

原创
ithorizon 6个月前 (10-19) 阅读数 22 #后端开发

轻松掌握指针:先读这篇笔记,告别恐惧!

一、指针简介

指针是C语言中的一个核心概念,它是内存地址的抽象描述。领会指针对于深入掌握C语言至关重要。本文将带你轻松掌握指针的使用,告别恐惧。

二、指针的基本概念

指针本质上是一个变量,用于存储另一个变量的内存地址。在C语言中,我们可以通过取地址符(&)来获取一个变量的内存地址。

int a = 10;

int *p = &a;

在上面的代码中,p 是一个指针变量,它存储了变量 a 的内存地址。

三、指针的运算

指针可以进行以下几种运算:

  • 指针与整数相加减
  • 指针与指针相减
  • 指针的递增和递减

下面是一个指针运算的示例:

int arr[5] = {1, 2, 3, 4, 5};

int *p = arr;

// 指针与整数相加

p += 2;

printf("%d ", *(p)); // 输出 3

// 指针与整数相减

p -= 2;

printf("%d ", *(p)); // 输出 1

// 指针的递增

p++;

printf("%d ", *(p)); // 输出 2

// 指针的递减

p--;

printf("%d ", *(p)); // 输出 1

四、指针与数组

指针与数组有着密切的关系。在C语言中,数组名实际上是一个指向数组首元素的指针。我们可以使用指针来访问数组元素。

int arr[5] = {1, 2, 3, 4, 5};

int *p = arr;

for (int i = 0; i < 5; i++) {

printf("%d ", *(p + i)); // 输出 1 2 3 4 5

}

此外,我们还可以使用指针遍历多维数组:

int arr[3][4] = {

{1, 2, 3, 4},

{5, 6, 7, 8},

{9, 10, 11, 12}

};

int (*p)[4] = arr;

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 4; j++) {

printf("%d ", *(*(p + i) + j)); // 输出 1 2 3 4 5 6 7 8 9 10 11 12

}

}

五、指针与函数

指针在函数中的应用非常广泛。我们可以通过指针传递变量的地址,从而在函数内部修改变量的值。

void addOne(int *p) {

(*p)++; // 修改变量的值

}

int main() {

int a = 10;

addOne(&a);

printf("%d ", a); // 输出 11

return 0;

}

此外,指针还可以作为函数的返回值,返回一个指向动态分配内存的指针。

int *createArray(int size) {

int *arr = (int *)malloc(size * sizeof(int));

if (arr == NULL) {

return NULL; // 内存分配落败

}

return arr;

}

int main() {

int *arr = createArray(5);

if (arr == NULL) {

return 1; // 内存分配落败

}

// 使用数组...

free(arr); // 释放内存

return 0;

}

六、指针与结构体

指针在结构体中的应用也非常广泛。我们可以使用指针来访问结构体的成员,以及动态分配结构体变量的内存。

typedef struct {

int x;

int y;

} Point;

Point *createPoint(int x, int y) {

Point *p = (Point *)malloc(sizeof(Point));

if (p == NULL) {

return NULL; // 内存分配落败

}

p->x = x;

p->y = y;

return p;

}

int main() {

Point *p = createPoint(10, 20);

if (p == NULL) {

return 1; // 内存分配落败

}

printf("(%d, %d) ", p->x, p->y); // 输出 (10, 20)

free(p); // 释放内存

return 0;

}

七、指针的高级应用

指针的高级应用包括函数指针、指针数组、指向指针的指针等。这些概念虽然纷乱,但掌握后能大大减成本时间编程能力。

八、总结

指针是C语言的核心概念之一,虽然初学者也许会感到困惑,但只要掌握基本原理和常见用法,就能轻松应对。通过本文的学习,相信你已经告别了指针的恐惧,起初享受编程的乐趣。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门