在 C 语言中,“&” 有以下几种主要的意思:
一、取地址运算符
用于获取变量的内存地址。例如,“int a = 10; int *p = &a;”,这里的 “&a” 表示变量 “a” 的地址,将这个地址赋值给指针变量 “p”,使得 “p” 指向 “a”。
在函数参数传递中,如果一个参数是指针类型,并且通过取地址运算符将变量的地址传递给函数,那么函数可以通过这个指针修改原始变量的值。例如:
void changeValue(int *ptr) {
*ptr = 20;
}
int main() {
int num = 10;
changeValue(&num);
printf("%d", num); // 输出 20
return 0;
}
二、按位与运算符
对两个整数进行按位与操作。它将两个操作数对应的二进制位进行比较,如果两个位都为 1,则结果位为 1,否则为 0。例如,“5 & 3”,5 的二进制表示为 101,3 的二进制表示为 011,按位与的结果为 001,即 1。
可以用于屏蔽某些位。例如,如果要将一个整数的低两位清零,可以使用 “&” 与一个特定的掩码进行操作。比如 “x = x & 0xFFFC;”,这里 0xFFFC 的二进制形式为 1111111111111100,与 “x” 进行按位与操作后,“x” 的低两位被清零。