C语言基础知识:地址与取地址符

本文深入探讨了C语言中的变量、地址和指针的概念。变量不仅是存储数据的容器,还包含类型、名称和内存地址。取地址符`&`用于获取变量的内存地址,而指针变量则用于存储其他变量的地址。通过`*`运算符,我们可以访问和修改指针指向的变量值。理解这些基本概念对于有效使用C语言至关重要。
摘要由CSDN通过智能技术生成

地址与取地址符

变量的地址

变量的基本属性

  • 包括以下内容
    • 变量类型
    • 变量名
    • 变量值
    • 变量存在于内存中位置

我们声明变量(如int number)时,程序根据变量的类型(如int)分配一块内存,并将这块内存的开始地址变量名关联起来。
或者,我们可以试着将变量想象成一个盒子,不同类型的变量就是装着不同类型东西的盒子。除了类型之外,变量还有一个属性就是地址(address),我们可以把这看作是贴在盒子上的一种标签。如果你把这个地址给到了张三,张三就可以利用这个地址来找到“贴着对应标签的盒子”-------对应的变量。

使用变量

当然,对于变量的使用我们可以非常容易。使用变量名我们就可以访问和输出变量的值,举个例子:

printf("%d",number);

也可以直接修改变量的值,如:

number=100;

使用变量的地址

在格式化输入中,我们了解到有取地址符&。所以,对于一个int类型的变量number,当我们写number的时候得到的是变量的值(即盒子里的东西),而当我们写&number的时候我们得到的就是,变量number的地址(即盒子上的标签)。举个例子:
使用取地址符可以得到内存地址

scanf("%d",&number);

通过&number得到变量number的内存地址,可以在读入值时确认要读入的内存位置。也可以用%p格式占位符将内存地址输出出来。

printf("%p",&number);

所以,在C语言中地址值也可以被认为是一种特殊类型的值。C语言中也设计了专门类型的变量,对地址的值进行存储

保存内存地址的变量

我们声明一个可以存储整数型值的变量number,会写成int number;,而我们现在希望有一个变量p_number,可以存储整数型值的变量的地址,我们就需要写成int *p_number
保存内存地址的变量的基本属性

  • 包括以下几个部分
    • 存储的内存地址对应的变量类型
    • 变量名
    • 变量值(另一个变量的内存地址)
    • 变量存在于内存中的位置(自己的变量地址

我们声明保存内存地址的变量(如int *p_number)时,*标记出这个变量是用来存储内存地址的变量,而在*前则是存储的内存地址对应的变量类型。与一般变量相同,这个变量声明后也会有自己的内存地址,声明变量后这块内存的开始地址也会与这个变量名关联到一起。

变量之间的关联

当我们有了这样一个变量p_number之后,我们可以将整数型变量number的地址放到变量p_number里面,这个过程我们可以通过将变量p_number赋值成“取变量number地址”的形式来完成-----------p_number=&number;
一样的,我们也可以通过float *q;声明一个变量,来存储浮点数类型的变量float n的地址值。我们也可以通过unsigned int *k;来声明一个变量,用来存储无符号整数类型的变量unsigned int a的内存地址。
不难发现,将*标记加在类型后标记了的变量是用来存储内存地址的变量而不是普通数值
盒子的比喻理解清楚,变量变量的值变量的地址特殊的用于存储地址的变量,这些不同的概念,相信应该很容易吧。
我是Panic,一个热爱学习和分享的人,一起加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l_0_f

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值