C-指针

发布时间 2023-03-27 23:09:33作者: Khrushchefox

指针

每一个变量都有一个内存位置, 每一个内存位置都定义了可使用 & 运算符访问的地址, 它表示了在内存中的一个地址.

指针也就是内存地址, 指针变量是用来存放内存地址的变量.

int a = 1;
int * p = NULL;
p = &a;
printf("变量a的地址为: %p", p);
printf("内存上存储的值为: %d", *p);
// *号: 间接运算符, 也叫解引用运算符, 用来获取对应地址存储的值
*p = 10;
printf("变量a的值为: %d", a);  // a = 10

交换变量的值

#include <stdio.h>

void swap_value(int * v1, int * v2)
{
    int temp;
    temp = *v1;
    *v1 = *v2;
    *v2 = temp;
}

int main()
{
    int a = 1, b = 10;
    swap_value(&a, &b);
    printf("a = %d, b = %d", a, b);
    return 0;
}

const类型

  • const 在定义指针前面, 不能通过指针改变指向变量的值

    int a = 1, b = 10;
    const int* p = &a;
    *p = 20;  // !!!报错!!!
    a = 20;  // 可以这样改变值
    p = &b;  // 可以改变指针的指向
    
  • const 在定义指针后面, 不能改变指针的指向

    int a = 1, b = 10;
    int* const p = &a;
    *p = 20;  // 可以改变值
    p = &b;  // !!!报错!!!
    
  • const 在定义指针的前面和后面, 兼顾以上两种

    int a = 1, b = 10;
    const int* const p = &a;
    *p = 20;  // !!!报错!!!
    p = &b;  // !!!报错!!!