C 指针:& 与 *

C 指针:& 与 *
二次蓝 Lv4

& 表示取一个变量的地址(指针);* 表示取一个变量的值(这个值应该是一个内存地址)对应的变量,对他进行操作,两者相反:

1
2
3
4
5
6
7
8
9
10
11
12
13
int x = 7;
// 声明一个指针类型的z
int* z;
// 把x的指针赋值给z
z = &x;
// 使用*操作z指针对应的值
--*z;
// 最后,x的值变成6

// 这个例子,声明语句里面的*表示这是一个指针类型(在等号左边)
float x, *ptr = &x;
*ptr = 1.7; // 将1.7赋值给变量x
++(*ptr); // 并将变量x的值加1

补充一个知识点,这点也是之前导致我有所困惑的原因:C 的左值与右值。
* 在左值里,表示这是一个指针类型,在右值里表示取一个指针变量对应内存地址的值

*z 赋值给另一个变量的时候,是把值拷贝过去的。

1
2
3
4
5
6
7
8
9
// 交换两个变量的值:Swap(&a, &b);
void Swap(int* x, int* y) {
// 保存x的值到tmp
int tmp = *x;
// 把x指针对应的值修改为y指针对应的值
*x = *y;
// 把y指针对应的值修改为之前备份的x指针对应的值
*y = tmp;
}
  • 标题: C 指针:& 与 *
  • 作者: 二次蓝
  • 创建于 : 2023-05-22 10:12:45
  • 更新于 : 2023-05-22 10:14:00
  • 链接: https://blog.ercilan.cn/2023/05/22/C-指针:&-与/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
C 指针:& 与 *