如何解决C语言地址分配查询
你能帮我理解这个基本项目吗:
我有两个变量 i 和 J ,我的查询是我已经初始化了“I”,然后是“J”,但是第一个地址分配给了 J 而不是“I”。
你能帮我理解为什么吗?
I 和比 J 高 4 位的地址
#include<stdio.h>
int main()
{
int i;
printf("%d",sizeof(int));
printf("enter the number to multiply wuth 1 through 10:");
scanf("%d",&i);
printf("size of I:%d\n",sizeof(i));
for(int j=0;j<=10;j++){
printf("%d\n",i*j);
printf("Address of j:%d\n",&j);
}
printf("%d",&i);
return 0;
}
解决方法
编译器使用自己的算法来决定如何在变量之间分配内存,基于许多因素,例如对齐和缓存线使用情况。不能保证它们会按照与它们的声明相同的顺序排列在内存中,也没有任何特别的理由期望这种情况。 (而且除非你取变量的地址,否则它可能会被优化成一个完全不占用内存的寄存器。)
,它完全依赖于编译器。由于所有这些变量都存储在堆栈中,我们无法决定将哪个地址提供给哪个变量。 尝试多次运行相同的代码,您可能会发现 i 的地址分配在 j 之前。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。