关于vc变量定义顺序猜测
来源:互联网 发布:知乎小说推荐知乎言情 编辑:程序博客网 时间:2024/06/05 15:19
没事上在网上看到网友提问指针加减的问题,看到个很有意思的现象——变量声明和地址的关系,大胆猜测一下,望指正。
下面两个小程序的输出是什么?
//code 1#include<stdio.h>void main(){ int a=1,b=2,c=3; int *p=&a; *(p++); printf("a=%d,b=%d,c=%d\n",*(p-1),*(p-2),*(p-3));}
//code 2#include<stdio.h>void main(){ int a=1; int b=2; int c=3; int *p=&a; printf("a=%d,b=%d,c=%d\n",*(p++),*(p-1),*(p-2));}
//code 3#include<stdio.h>void main(){volatile int a=1;volatile int b=2;volatile int c=3;volatile int *p=&a; printf("a=%d,b=%d,c=%d\n",*(p++),*(p-1),*(p-2));}
代码1的输出为a=1,b=2,c=3。。。查看三个变量地址:
原来我们声明变量虽然是按照a,b,c 的顺序,但是编译器和我们理解的不同,反倒是c的内存地址在前。。。这样就好理解了。
代码2是想尝试逐次定义的,但是结果竟然和代码1完全一样。忽然想起来有个编译器优化。
代码3的结果和图片也相同。
因此就猜测编译顺序和定义顺序不同造成的,希望知道答案的高手给个信。
- 关于vc变量定义顺序猜测
- 关于 VC 执行顺序
- 关于变量的定义
- 关于变量的定义
- 关于Meltemi的猜测
- linux定义变量内存地址分配顺序
- 关于变量定义,声明,宏定义等
- 关于c语言定义变量
- 关于STM32的变量定义
- 关于STM32的变量定义
- 关于变量a的定义
- vc静态变量构造析构顺序
- VC中定义变量名的陷阱
- 关于XSD(XML模式定义)的妄加猜测(新手勿看(以防误导),高手指正)
- 关于#define 定义的先后顺序
- 关于bitset定义的VC实验
- 关于类成员变量初始化顺序
- 关于Java变量初始化顺序问题实践
- 高并发的epoll+线程池,epoll在线程池内
- shell 编程中使用到得if语句内判断参数
- 排序算法C++代码——快速排序
- Linux命令pkg-config
- 【分享】百度百科500万词条
- 关于vc变量定义顺序猜测
- MVN 构建项目时的一个问题--Could not resolve de pendencies for projec
- mvc3 创建项目
- 用C++\CLI包装普通类
- Android 如何添加一个apk使模拟器和真机都编译进去
- android百度地图开发測試时只出现网格
- Windows Socket编程
- AC多模式匹配算法
- Android 修改Camera拍照的默认保存路径