如何理解 一个变量的地址 中的“地址”?地址形式是什么样的
您好我是C语言初学者对于很多词句感觉都好抽象变量明白那变量的地址是什么样的能举个例子不谢谢p的值是什么意思谢谢。。...
您好 我是C语言初学者 对于很多词 句 感觉都好抽象
变量明白 那变量的地址 是什么样的 能举个例子不 谢谢
p的值 是什么意思谢谢。。 展开
变量明白 那变量的地址 是什么样的 能举个例子不 谢谢
p的值 是什么意思谢谢。。 展开
5个回答
展开全部
C语言本身没有“地址”的概念。地址是语言实现中涉及到的内容。如果学过计算机组成原理或者汇编语言就会知道存储器中构造出一个连续的整数集合作为地址空间(通常不是物理地址空间, 生命行者2010 错误),而地址是其中的一个整数。一个地址标识一个存储器单元(可以存储一个字节),通过不同的地址就可以访问不同的存储器单元。
C语言中,变量是保存数值的一种对象。C语言的编译器把变量绑定到地址空间中,只要知道变量的(首)地址就可以标识这个变量。变量的对象语义要求变量的值能在程序运行期在存储器中的确定位置能够被找到,因此一个变量在确定的生存期中具有且只有一个地址。而变量的值在实现上则是指存储这个变量的一个或多个具有连续地址的存储器单元中存储的值(至于那个存储器单元存储哪个部分,涉及到字节序问题,和语言本身无关,初学者无需关心)。(seven_qj错误,C语言的变量可以储存在CPU的寄存器(和物理内存、虚拟内存被映射在同一个地址空间)中(定义寄存器变量时通过register存储类限定符修饰),而不一定是内存中。)
PS
1.在32位平台上,地址空间的大小是2^32字节,可以用一个32位整数表示。
2.C语言中的指针(变量)就是提供了指针运算规则、类型检查的一种特殊的整数变量。
3.C语言中单目运算符&作用于一个对象时,返回指向这个对象的指针。
4.举例:
int a = 1;/*定义了一个变量a。*/
int *ptr=&a;/*定义了一个指向int变量的指针ptr,它的值被初始化为表达式&a的值,也就是a的地址*/
/*如果ptr的值是0x12345678,那么就表示a的地址是0x12345678。通过p可以间接访问a所在的存储器单元,从而对a进行间接操作。*/
/*话说0xFFFFFFFF也太扯淡了点- -...*/
C语言中,变量是保存数值的一种对象。C语言的编译器把变量绑定到地址空间中,只要知道变量的(首)地址就可以标识这个变量。变量的对象语义要求变量的值能在程序运行期在存储器中的确定位置能够被找到,因此一个变量在确定的生存期中具有且只有一个地址。而变量的值在实现上则是指存储这个变量的一个或多个具有连续地址的存储器单元中存储的值(至于那个存储器单元存储哪个部分,涉及到字节序问题,和语言本身无关,初学者无需关心)。(seven_qj错误,C语言的变量可以储存在CPU的寄存器(和物理内存、虚拟内存被映射在同一个地址空间)中(定义寄存器变量时通过register存储类限定符修饰),而不一定是内存中。)
PS
1.在32位平台上,地址空间的大小是2^32字节,可以用一个32位整数表示。
2.C语言中的指针(变量)就是提供了指针运算规则、类型检查的一种特殊的整数变量。
3.C语言中单目运算符&作用于一个对象时,返回指向这个对象的指针。
4.举例:
int a = 1;/*定义了一个变量a。*/
int *ptr=&a;/*定义了一个指向int变量的指针ptr,它的值被初始化为表达式&a的值,也就是a的地址*/
/*如果ptr的值是0x12345678,那么就表示a的地址是0x12345678。通过p可以间接访问a所在的存储器单元,从而对a进行间接操作。*/
/*话说0xFFFFFFFF也太扯淡了点- -...*/
参考资料: 原创
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
内存地址这个概念
打个比方:整个内存就相当于一个拥有很多房间的大楼,每个房间都有房间号,比如从 101、102、103 一直到 NNN,我们可以说这些房间号就是房间的地址。相对应的内存中的每个单元也都有自己的编号,比如从0x00、0x01、0x02 一直到 0xNN,我们同样可以说这些编号就是内存单元的地址。房间里可以住人,对应的内存单元里就可以“住进”变量了:假如一位名字叫 A 的人住在 101 房间,我们可以说 A 的住址就是 101,或者 101 就是 A 的住址;对应的,假如一个名为 x 的变量住在编号为 0x00 的这个内存单元中,那么我们可以说变量 x 的内存地址就是 0x00,或者 0x00就是变量 x 的地址。
基本的内存单元是字节,英文单词为 Byte,我们所使用的 STC89C52 单片机共有 512 字节的 RAM,就是我们所谓的内存,但它分为内部 256 字节和外部 256 字节,我们仅以内部的 256 字节为例,很明显其地址的编号从 0 开始就是 0x00~0xFF。我们用 C 语言定义的各种变量就存在 0x00~0xFF 的地址范围内,而不同类型的变量会占用不同数量的内存单元,即字节,可以结合前面讲过的 C 语言变量类型深入理解
打个比方:整个内存就相当于一个拥有很多房间的大楼,每个房间都有房间号,比如从 101、102、103 一直到 NNN,我们可以说这些房间号就是房间的地址。相对应的内存中的每个单元也都有自己的编号,比如从0x00、0x01、0x02 一直到 0xNN,我们同样可以说这些编号就是内存单元的地址。房间里可以住人,对应的内存单元里就可以“住进”变量了:假如一位名字叫 A 的人住在 101 房间,我们可以说 A 的住址就是 101,或者 101 就是 A 的住址;对应的,假如一个名为 x 的变量住在编号为 0x00 的这个内存单元中,那么我们可以说变量 x 的内存地址就是 0x00,或者 0x00就是变量 x 的地址。
基本的内存单元是字节,英文单词为 Byte,我们所使用的 STC89C52 单片机共有 512 字节的 RAM,就是我们所谓的内存,但它分为内部 256 字节和外部 256 字节,我们仅以内部的 256 字节为例,很明显其地址的编号从 0 开始就是 0x00~0xFF。我们用 C 语言定义的各种变量就存在 0x00~0xFF 的地址范围内,而不同类型的变量会占用不同数量的内存单元,即字节,可以结合前面讲过的 C 语言变量类型深入理解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量的地址就是变量的编号,和每个大楼的房间号一样,房间号是地址,里面存放的是内容,也就是变量的值了,不知道这么解释你能理解不?建议你看下汇编,再学C的地址就简单了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
地址就是变量在内存中存放的位置。例如32位机上内存形式可以为:0xFFFFFFFF。
例如:
int a=1;
int *ptr=&a;
假设变量a的地址为0xFFFFFFFF,那么p的值就是FFFFFFFF。
例如:
int a=1;
int *ptr=&a;
假设变量a的地址为0xFFFFFFFF,那么p的值就是FFFFFFFF。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量指的是数据
地址指的是此数据的物理位置
例:变量a的地址是“某柱面某扇区某磁道”
地址指的是此数据的物理位置
例:变量a的地址是“某柱面某扇区某磁道”
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询