理解C语言中的指针只需要两个案例

前言

在C语言中,指针是一种特殊的变量,它用于存储另一个变量的内存地址。理解指针的关键是明白它实际上是一个指向内存位置的变量。这里有几个关键点来帮助你理解:

  1. 内存地址:每个变量都存储在计算机内存的某个位置,这个位置有一个特定的地址。就像房子有街道地址一样,内存地址是找到那个内存位置的方式。
  2. 声明指针:在C语言中,你可以声明一个指针来存储某种类型变量的地址。例如,int *ptr; 声明了一个指向整数的指针。
  3. 赋值:你可以将一个变量的地址赋给指针。例如,如果你有一个整数变量 int num = 10;,你可以使用 ptr = #num 的地址赋给 ptr。这里,& 符号用于获取变量的地址。
  4. 访问值:一旦你有了指向某个变量的指针,你可以使用 * 运算符来访问或修改该地址处的值。例如,*ptr = 20; 会将 ptr 指向的内存地址(即 num)中的值更改为 20。
  5. 指针的指针:你甚至可以有一个指向另一个指针的指针,以此类推。这允许你创建复杂的数据结构,如链表和树。
  6. 动态内存分配:指针在动态内存分配中扮演关键角色。使用如 malloccalloc 这样的函数,你可以在运行时分配内存,并使用指针来引用这块内存。
  7. 数组和指针:在C语言中,数组和指针紧密相关。数组名本质上是一个指向数组第一个元素的指针。

案例一

#include 

int main() {
    int num = 10;
    int *ptr;      // 声明一个指向整数的指针

    ptr = #    // 将num的地址赋给ptr

    printf("num的值: %d\n", num);
    printf("ptr指向的值: %d\n", *ptr);

    *ptr = 20;     // 通过ptr更改num的值
    printf("num的新值: %d\n", num);

    return 0;
}


结果:

num的值: 10
ptr指向的值: 10
num的新值: 20

案例二

#include 

void addTen(int *p) {
    *p = *p + 10;   // 在指针指向的值上增加10
}


int main() {
    int num = 10;
    printf("原始值: %d\n", num);

    addTen(&num);   // 将num的地址传给函数
    printf("增加后的值: %d\n", num);

    return 0;
}

结果

原始值: 10
增加后的值: 20

你可能感兴趣的:(c语言,开发语言)