1. 什么是 & ?
&符号通常被称为取地址运算符,其作用是返回变量的地址。在C语言中,符号 & 是一种特殊的运算符,是用来获得一个变量的地址的。
1.1 & 的语法
int a = 10;
int *ptr = &a;
上面的代码中,&a 表示取变量 a 的地址,ptr 是一个指向整型变量的指针,ptr=&a 则表示将 a 的地址赋给 ptr。
1.2 & 的作用
& 和 * 这两个符号在C语言和C++语言中有很多使用场景。下面我们看一下 & 的具体作用:
获取变量的地址,用于操作指针。
作为变量的引用。
用于获取结构体成员或数组元素的地址等。
2. & 的应用
2.1 & 用于操作指针
指针是C语言中的一个非常重要的概念,作为程序员,操作指针的能力是必须要掌握的技能。& 取地址运算符是对指针操作最为常见的一种方法,通过将一个变量的地址赋给指针,就可以实现通过指针来操作这个变量。
int a = 10;
int *ptr = &a;
*ptr = 20;
printf("%d\n", a); // 输出20
上面的代码中,通过 & 符号取变量 a 的地址,将其赋给指针 ptr。然后,将指针指向的变量的值修改为20,并输出 a 的值。可以看到,a 的值确实被成功修改为了 20。
2.2 & 作为变量的引用
& 可以使用在一个变量之前来引用这个变量,这种引用方式叫做“取引用”。通过取引用,可以使变量的值在函数调用中被改变。
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 1, y = 2;
printf("%d %d\n", x, y);
swap(&x, &y);
printf("%d %d\n", x, y);
}
上面的代码中, swap 函数通过指针来交换 x 和 y 的值,通过传递 x 和 y 的地址来实现。
2.3 & 用于获取结构体成员或数组元素的地址
通过 & 可以获取一个结构体成员或数组元素的地址。这个特性在许多常见的操作中都非常有用。
struct student {
char name[20];
int age;
char gender;
} s;
char gender = 'M';
s.gender = gender;
char *pgender = &s.gender;
上面的代码中,通过取结构体成员的地址来获取 s 中 gender 的地址,并将 gender 的值赋给变量 pgender。
3. 结论
&是C语言中非常重要的一个运算符,用来获取变量的地址。它可以用于操作指针,作为变量的引用,获取结构体成员或数组元素的地址等。对于C语言的初学者来说,掌握 & 符号的用法是非常重要的。