C语言如何获取结构体中指定元素的大小?sizeof ( (X*)0 ) -> Y)
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何获取结构体中指定元素的大小?sizeof ( (X*)0 ) -> Y)相关的知识,希望对你有一定的参考价值。
获取结构体的大小,这好办,这样就可以了:
#include <stdio.h>
struct user
{
char name[20];
char age[10];
};
int main() {
printf("%d\\n", sizeof(user));//30
return 0;
}
但是如果要获取结构体中某个元素大小,在不创建结构体的情况下,如何得到呢?
可以这么操作:
#include <stdio.h>
struct user
{
char name[20];
char age[10];
};
int main() {
printf("%d\\n", sizeof((user*)0));//4
printf("%d\\n", sizeof((user*)0)->name);//20
printf("%d\\n", sizeof((user*)0)->age);//10
return 0;
}
这种用法被网友称为空指针操作,大概等价于:
#include <stdio.h>
struct user
{
char name[20];
char age[10];
};
int main() {
user* a = 0;
//user* a = NULL;
printf("%d\\n", sizeof(a->age));//10
return 0;
}
至于为什么能写在同一行上表达,我就不了解了,匿名指针??
参考文章2:C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 & ( (struct X*)0 ) -> Y)语法
以上是关于C语言如何获取结构体中指定元素的大小?sizeof ( (X*)0 ) -> Y)的主要内容,如果未能解决你的问题,请参考以下文章