注册 登录
编程论坛 C语言论坛

想请教一下结构变量的存储方式

卡卡3315 发布于 2020-03-22 18:06, 1750 次点击
已经知道了结构是对齐存储的,那么结构变量的名字存在哪里了?如果对结构变量取地址的话应该是取得哪一个地址?
举个例子:
#include<stdio.h>
struct date{
    int year;
    int month;
    int day;
};
int main(int argc,const char *argv[])
{
    date today = {2019,2,3};
    printf("%d %d %d",today.day,today.month,today.year);
    return 0;
}
如果取&today,应该指向哪里?
另外我在main里面定义today时没有加struct为什么也能通过编译而且运行正常?
6 回复
#2
return_02020-03-22 18:20
指向的是自定义的一个联合体
#3
return_02020-03-22 18:23
他们是和在一起储存的
#4
forever742020-03-22 21:15
一般来说,从数值(地址值)上看,忽略其他,
&today 和 &today.year 应该是一致的

你编译能成功是因为你的编译器运行在C++模式。


[此贴子已经被作者于2020-3-22 21:16编辑过]

#5
lin51616782020-03-22 21:33
变量名存哪里?
变量名不存
变量名只是一个给编译器看的符号
编译器把这个符号和内存关联起来
对变量的读写 映射为对相应内存的读写
然后就木有了

备注 我知道全局符号有存 没必要讨论 略
#6
卡卡33152020-03-23 10:19
回复 5楼 lin5161678
感谢
#7
maomao123452020-03-24 09:46
变量名只是区分变量的符号
1