18.指针类型与二级指针.md 1.3 KB
Newer Older
极客江南's avatar
极客江南 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
## 指针类型

- 在同一种编译器环境下,一个指针变量所占用的内存空间是固定的。
  ![](https://img-blog.csdnimg.cn/img_convert/a95f575889111ad8d64cc2c1aa8ecb1e.png)

- 虽然在同一种编译器下, 所有指针占用的内存空间是一样的,但不同类型的变量却占不同的字节数

+ 一个int占用4个字节,一个char占用1个字节,而一个double占用8字节;
+ 现在只有一个地址,我怎么才能知道要从这个地址开始向后访问多少个字节的存储空间呢,是4个,是1个,还是8个。
+ 所以指针变量需要它所指向的数据类型告诉它要访问多少个字节存储空间
  ![](https://img-blog.csdnimg.cn/img_convert/af1fd05a523d9ba4e196e326f537589b.png)

---

## 二级指针

- 如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。也称为“二级指针”

```c
    char c = 'a';
    char *cp;
    cp = &c;
    char **cp2;
    cp2 = &cp;
    printf("c = %c", **cp2);
```

![](https://img-blog.csdnimg.cn/img_convert/af331163ce03df7573810fc05ceb03c6.png)

- 多级指针的取值规则

```c
int ***m1;  //取值***m1
int *****m2; //取值*****m2
```

---

## 练习

- 定义一个函数交换两个变量的值
- 写一个函数,同时返回两个数的和与差