📜  c 中 * 和 & 的区别 (1)

📅  最后修改于: 2023-12-03 14:39:41.336000             🧑  作者: Mango

C 中 * 和 & 的区别

在 C 语言中,* 和 & 是两个非常重要的符号。他们都可以用于指针类型的变量,但是它们的含义是完全不同的。本文将介绍 * 和 & 在 C 语言中的区别。

*

在 C 语言中,* 可以表示两种含义:

  1. 乘法符号
  2. 解引用符号
乘法符号
  • 可以表示乘法符号,比如:
int a = 2;
int b = 3;
int c = a * b;
// c 的值为 6
解引用符号
  • 还可以表示解引用符号,这是指通过指针访问它所指向的变量。比如:
int a = 2;
int* p = &a; // p 指向 a 的地址
int b = *p; // 解引用 p,得到 a 的值,即 b = 2

在上述代码中,*p 表示指针 p 所指向的变量的值,即 a 的值,它等价于 a。

&

在 C 语言中,& 可以表示两种含义:

  1. 取地址符号
  2. 按位与符号
取地址符号

& 可以表示取地址符号,比如:

int a = 2;
int* p = &a; // p 指向 a 的地址

在上述代码中,&a 表示变量 a 的地址,它等价于 p。

按位与符号

& 还可以表示按位与符号,比如:

int a = 9; // 二进制表示为 1001
int b = 6; // 二进制表示为 0110
int c = a & b; // c 的值为 0000,即 0

在上述代码中,& 表示按位与运算符,它对应二进制的每一位进行与运算,只有当两个数都为 1 时才为 1,否则为 0。

总结
  • 和 & 在 C 语言中有着不同的含义,* 表示乘法符号或解引用符号,& 表示取地址符号或按位与符号。因此,我们在编写代码时要特别注意它们的区别。