📜  C-指针(1)

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

C指针

在C语言中,指针是一个非常强大的概念。指针是一个变量,可以存储内存地址,并允许您直接访问该内存地址中的数据。通过指针,您可以创建更灵活的数据结构,以及更高效的函数调用等等。

指针的基本概念

在C中,指针由两个符号 "" 和 "&" 表示。 "" 符号表示一个指针,"&" 符号表示一个变量的地址。

int a = 10;
int *p = &a;

printf("%d\n", *p); // 输出 10

这里我们定义了一个整数变量 a,并将其地址存储在指针变量 p 中。当我们使用 *p 时,实际上是将指针 p 指向的内存地址中的值取出来。

指针的算术运算

指针在C中还可以进行算术运算。指针算术运算是指将指针与一个整数进行加、减运算等操作。

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

int *p = arr; // 指向数组首元素

printf("%d\n", *(p+2)); // 输出数组的第三个元素 3

在这个例子中,我们定义了一个 int 类型的数组 arr,并将指针变量 p 指向其首元素。可以通过对 p 进行算术运算访问数组中的其他元素。

指针和函数

指针的另一个重要应用是在函数参数中的使用。通过使用指针参数,函数可以获取调用它的函数中的变量的内存地址,并可以修改该变量的值。

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

int main() {
    int a = 3, b = 5;
    swap(&a, &b);
    printf("%d %d\n", a, b); // 输出 5 3
    return 0;
}

在这个例子中,我们定义了一个交换两个整数变量值的函数 swap。函数参数是两个指向 int 变量的指针。在函数中,我们通过指针获取变量的值,并将它们进行交换。

总结

指针是C语言中一个非常强大的工具。它们允许您直接访问内存中的数据,创建更高效的数据结构和函数等。指针的应用需要仔细思考,但是使用它们的好处是显而易见的。