C语言 变量前面有个"&"

本文详细介绍了C语言中的取地址运算符“&”的使用方法,包括如何获取变量的内存地址,以及在函数调用中如何传递变量地址等关键概念。

在英文中这个符号和“and”是一个意思,就读作“and”

 

“&”是c语言的取地址运算符。

在程序中定义变量时,变量x只要一声明,就会给他分配一块内存来保存这个变量,而“&”就是保存这个变量的内存的地址(相当于给内存编号)
C语言的强大之处就是可以直接操作内存

 

比如:int a //定义变量

        a=5   //给a赋值5

这个时候,变量a 的值是5,这个值保存在内存上的位置是“&a“

为什么这么写?

我目前仅知道,C语言有些函数 使用某个变量 是通过位置找这个变量的。比如我看到很多带 scanf() 语句里面。

 

 

### C语言中`&`符号的使用场景和规则 在C语言编程中,`&`操作符用于获取变量的内存地址。当希望传递变量的实际位置给函数或创建指针时会频繁用到该符号。 #### 变量取址 对于基本类型的变量来说,在定义之后可以通过前置`&`来获得其存储单元的位置信息[^3]: ```c int num = 10; printf("num's address is %p\n", (void*)&num); ``` 上述代码片段展示了如何打印整数型变量`num`所在的内存地址。 #### 函数参数传递中的应用 当调用带有指针形参的函数时,通常会在实参前面加上`&`以便能够修改原值。比如标准库里的`scanf()`函数就需要用户提供输入缓冲区的确切位置才能完成赋值工作[^2]: ```c #include <stdio.h> int main(void){ int choice; printf("请选择(1/0):\n"); scanf("%d", &choice); // 将用户输入的数据存入choice所占的空间内 } ``` 这里通过向`scanf`提供`choice`变量的地址实现了对外部数据的有效读取并更新局部对象的内容。 #### 动态内存管理配合 另外,在涉及堆空间申请的情况下也离不开这个运算符的帮助——因为像`malloc()`这样的API返回的是新分配区域首字节处的指针;而为了后续能正常释放资源以及访问其中存放的信息,则往往要借助于`&`把相应实体关联起来。 ```c char *str = NULL; size_t size = 50; // 分配指定大小的一片连续区间供字符串处理 str = malloc(size); if(str != NULL){ strcpy(str, "Hello World!"); char anotherStr[size]; strncpy(anotherStr, str, sizeof(anotherStr)-1); printf("&anotherStr points to string: %s\n", anotherStr); } free(str); // 记得清理不再使用的外部资源 ``` 此段示范说明了怎样利用`&`辅助实现对动态开辟出来的字符数组的操作过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值