一个有趣的问题
Posted 一颗蘋果
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个有趣的问题相关的知识,希望对你有一定的参考价值。
先看代码
#include<stdio.h> #include<stdlib.h> typedef struct { int a[2]; double d; } struct_t; double fun(int i) { volatile struct_t s; s.d = 3.14; s.a[i] = 1073741824; return s.d; } int main(void) { printf("%lf\\n", fun(0)); printf("%lf\\n", fun(1)); printf("%lf\\n", fun(2)); printf("%lf\\n", fun(3)); //printf("%lf\\n", fun(4)); system("pause"); return 0; }
打印fun函数当输入0到3时,输出会不一样:
当函数输入4时,程序运行错误:
前4项正常输出,到输出fun(4)时,则程序会报错,这是为什么呢!!!
我们可以看到在struct这个结构体在内存中的排列顺序为a中有两个int类型,各占四个字节,d为double类型,占8个字节,如下图:
以上是关于一个有趣的问题的主要内容,如果未能解决你的问题,请参考以下文章