📜  c 编程中的指针 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:29:45.108000             🧑  作者: Mango

C 编程中的指针

指针作为 C 编程语言的一个重要特性,它提供了一种机制来访问内存中的地址和数据,使用指针可以让程序更高效、更灵活。

定义指针

指针定义需要指定它所指向的数据类型,语法如下:

type *ptr;

其中 type 表示指针所指向的数据类型,* 表示这是一个指针,ptr 是指针变量名。

例如,定义一个指向整型变量的指针:

int *p;
操作指针

可以通过取地址运算符 & 获取变量的地址,例如:

int a = 10;
int *p = &a; // 将 a 的地址赋值给指针 p

可以通过解引用运算符 * 访问指针指向的数据,例如:

int a = 10;
int *p = &a; // 将 a 的地址赋值给指针 p
*p = 20; // 修改指针所指向的数据为 20

此时,a 的值也会被修改为 20。

指针与数组

在 C 编程中,数组名本质上是一个指向数组第一个元素的指针,因此可以使用指针来访问数组元素。例如:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // 将数组名赋值给指针 p
*(p+2) = 100; // 修改数组第三个元素为 100,也可以写成 p[2] = 100;

可以使用指针遍历数组元素,例如:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
for (int i = 0; i < 5; i++) {
    printf("%d ", *p);
    p++; // 指针向后移动一个单位
}
指针与函数

指针也可以作为函数参数传递,通过指针可以修改函数外部变量的值,例如:

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x = 10, y = 20;
    printf("x=%d y=%d\n", x, y);
    swap(&x, &y); // 传递指针
    printf("x=%d y=%d\n", x, y);
    return 0;
}

还可以通过函数返回指针来获取函数内部的变量地址,例如:

int *getArray(int size) {
    int *arr = malloc(size * sizeof(int)); // 动态分配内存
    for (int i = 0; i < size; i++) {
        arr[i] = i;
    }
    return arr; // 返回指针
}

int main() {
    int *arr = getArray(5); // 接收函数返回的指针
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    free(arr); // 记得释放内存
    return 0;
}
总结

指针是 C 编程语言中的一个强大特性,它提供了一种访问内存的机制,可以让程序更高效、更灵活。在使用指针时需要特别注意指针的生命周期和内存管理,避免内存泄漏等问题。