c语言的关于结构体中含有指针问题?
c语言的结构体中含有指针来计算结构体数据分配内存空间大小是怎么分配的呢?如下程序为什么输出的是16,而不是4+8=“12“呢?请大神指点小弟一下!谢谢!voidtest2...
c语言的结构体中含有指针来计算结构体数据分配内存空间大小是怎么分配的呢?如下程序为什么输出的是16,而不是4+8=“12“呢?请大神指点小弟一下!谢谢!
void test2(){
struct student{
int age;
char *a;
}str = {18,"小强"};
printf("%d",sizeof(struct student));
}
int main(int argc, const char * argv[])
{
test2();
return 0;
} 展开
void test2(){
struct student{
int age;
char *a;
}str = {18,"小强"};
printf("%d",sizeof(struct student));
}
int main(int argc, const char * argv[])
{
test2();
return 0;
} 展开
3个回答
展开全部
这是对齐问题,是在编译的时候,由编译器根据所在的系统平台来完成的。对齐的英文单词为:align。
看篇文档,链接如下:(说明:可暂时不理解对齐这个东西,往后深入编程以后,慢慢体会就来了,过来人担保,先不理解对齐,不会影响你学习编程。)
http://www.189works.com/article-10322-1.html
看篇文档,链接如下:(说明:可暂时不理解对齐这个东西,往后深入编程以后,慢慢体会就来了,过来人担保,先不理解对齐,不会影响你学习编程。)
http://www.189works.com/article-10322-1.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言_071_指针的定义和使用_上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针8字节,64位程序吗?
追问
嗯,是64位编译器。
追答
看楼上的吧,确实是对齐问题,建议一开始就养成这种习惯,小的放前面,对以后大有裨益。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询