c – 局部变量的堆栈
发布时间:2020-12-16 10:43:40 所属栏目:百科 来源:网络整理
导读:void Test2(){ int c=8; int b=7; int d=9; int *a; a = b; a+=sizeof(int); //I supposed that *a should points on variable d after this cout "bt" b "t" b endl; cout "at" a "t" *a endl; cout "ct" c "t" c endl; cout "dt" d "t" d endl;}
void Test2() { int c=8; int b=7; int d=9; int *a; a = &b; a+=sizeof(int); //I supposed that *a should points on variable d after this cout << "bt" << &b << "t" << b << endl; cout << "at" << a << "t" << *a << endl; cout << "ct" << &c << "t" << c << endl; cout << "dt" << &d << "t" << d << endl; } 我认为* a应该指向变量d,因为b和d(我认为)位于局部变量堆栈附近.但*在另一个地址上有一个点,所以* a!= d 解决方法
不,这是C的一个特征,称为未定义的行为.你不能在你拥有的数组(或数组边界上的一个位置)之外做指针算术.
你可以通过a = 1来使用它,因为a已经是一个int *,所以= 1会使它指向下一个整数. a = sizeof(int)将把sizeof(int)整数移到右边. +------+------+------+------+------+ | | | | | | +------+------+------+------+------+ ^ ^ ^ | | | a a+1 a+sizeof(int) (assuming sizeof(int) == 4) 再次,从技术上讲,它是未定义的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【风宇冲】Unity3D教程宝典之两步实现超实用的XML存档
- ruby-on-rails – Paperclip,未初始化的常量Paperclip :: S
- quick-cocos2d-x游戏开发【1】——引擎结构总览和创建项目
- objective-c – gdb控制台上的命令是什么?
- 不眠之夜-上production前的rehearsal
- c – 内存不足opencv haartraining
- 去除MDI子窗体最大化时的默认图标
- ruby-on-rails – 无法加载`Rails.application.database_co
- objective-c – containerURLForSecurityApplicationGroupI
- C#建立从笔记本电脑内部蓝牙4.0到蓝牙低功耗(BLE)外设的流