有关于不同类型占用存储地址的有关问题
有关于不同类型占用存储地址的问题
#include<iostream>
int main()
{
using namespace std;
int donuts = 6;
double cups = 4.5;
cout << "donuts value = " << donuts;
cout << " and donuts address = " << &donuts << endl;
cout << " cups value = " << cups;
cout << " and cups address = " << &cups << endl;
system("pause");
return 0;
}
donuts value = 6 and donuts address = 0x0065fd40
cups value =4.5 and cups address = 0x0065fd44
请问一下这里地址差4是因为int本身占用地址空间引起的吗?
那这是属于4个字节还是4位?为什么?
------解决思路----------------------
不是,栈上内存布局编译器说的算。
占多少内存用 sizeof(类型)
------解决思路----------------------
这种表现,是int 占用4Bytes 但是并不表示总是这样
TC2.0 int 16 Bits =2Bytes
如今的操作系统,编译器 int 很多都是 32Bits =4Bytes
然而 64Bits 系统 int 多数是 64Bits =8Bytes
更多位数的应该是大型机,巨型机之类的,没有接触相关资料,不清楚。
数据定义顺序,和存储位置并不总是一致的
当,编译器对内存安排很紧致的时候,可能会挨个排列,即便如此,
也可能有对齐问题,而给变量安排更多的空间
另外,顺序也未必是确定的
虽然有不少编译器是顺序安排的
#include<iostream>
int main()
{
using namespace std;
int donuts = 6;
double cups = 4.5;
cout << "donuts value = " << donuts;
cout << " and donuts address = " << &donuts << endl;
cout << " cups value = " << cups;
cout << " and cups address = " << &cups << endl;
system("pause");
return 0;
}
donuts value = 6 and donuts address = 0x0065fd40
cups value =4.5 and cups address = 0x0065fd44
请问一下这里地址差4是因为int本身占用地址空间引起的吗?
那这是属于4个字节还是4位?为什么?
------解决思路----------------------
不是,栈上内存布局编译器说的算。
占多少内存用 sizeof(类型)
------解决思路----------------------
这种表现,是int 占用4Bytes 但是并不表示总是这样
TC2.0 int 16 Bits =2Bytes
如今的操作系统,编译器 int 很多都是 32Bits =4Bytes
然而 64Bits 系统 int 多数是 64Bits =8Bytes
更多位数的应该是大型机,巨型机之类的,没有接触相关资料,不清楚。
数据定义顺序,和存储位置并不总是一致的
当,编译器对内存安排很紧致的时候,可能会挨个排列,即便如此,
也可能有对齐问题,而给变量安排更多的空间
另外,顺序也未必是确定的
虽然有不少编译器是顺序安排的