1、指针的定义

指针:代表这个指针变量保存的是内存地址;
获取内存地址的方法:&i
int *p = &i;
这样就可以获取到i的内存地址;

  1. int i= 0;
  2. int j = 1;
  3. int* p = &i;
  4. int *q = &j;
  5. printf("%p",p);
  6. printf("%q",q);

输出结果为:
image.png
连个内存地址是连续的;
这个指针也可以当做为整数类型;

1.2 指针的使用

指针可以用来访问和操作变量

#include <stdio.h>

int change(int *p);
int main(int argc, char **argv) {
    int i= 6;
    int* p = &i;
    printf("原先i的值为%d\n",i);
    change(p);
    printf("新的i的值为%d\n",i);
    return 0;
}
void change(int *p){
    printf("i的内存地址为%p\n",p);
    //只用指针访问变量的值
    printf("使用指针访问i变量的值%d",*p);
    //使用指针修改变量的值
    *p = 30;
}

输出结果为:
image.png

1.3 指针的常见应用场景

1、函数中需要返回两个值

#include <stdio.h>

//定义原型函数 
void swap(int *x, int *y);

//定义main函数
int main(void){
    int m,n;
    m = 12;
    n = 15; 

    //调用swap函数,交换m和n的值 
    swap(&m, &n);
    printf("m = %d; n = %d\n", m,n);

    return 0;
} 

void swap(int *x, int *y){
    int temp = *x;
    *x = *y;
    *y = temp; 
}

如果想返回多个变量,可以将多个变量传入函数,然后通过地址修改变量的值;