#include<stdio.h>
int main()
{
int x = 1,*t;
float y = 1.50,*u;
char k = 'c',*v;
t = &x;
u = &y;
v = &k;
printf("%p %p %p", t, u, v);
t++;
u++;
v++;
printf(" %p %p %p", t, u, v);
return 0;
}
嗨,我已经做了这段代码,但这里发生了一些不寻常的事情,我正在打印地址,当我增加所有的地址,然后从我的视图增量int将是2, float将是4和char将是1,但我得到了以下内容:
0xbffa6ef8 0xbffa6ef0 0xbffa6eff 0xbffa6efc 0xbffa6ef4 0xbffa6f00
对于float和char我认为这是正确的,但对于int我不知道为什么它给出了
假设系统/环境中的sizeof(int)
是2
。
然而,你的假设不正确。该标准没有要求int
的尺寸必须为2
或任何特定的尺寸。
你的程序显示int
的大小是4
在你的系统/环境。
教训:
永远不要依赖或假设一个类型的大小,总是使用sizeof
来确定大小,这就是标准提供sizeof
的原因。
t
的内存地址增量由sizeof(int)
给出。
如果sizeof(int)
与您期望的t增加的值不同,那么您的假设是错误的
int
数据类型通常为4字节。short
或short int
数据类型为2字节;
整数类型的实际大小因实现而异。唯一的保证是long不小于long, long不小于int, int不小于short。
或
sizeof (short int) <= sizeof (int) <= sizeof (long int)
但是你可以确定它的大小至少是16位
这将是有用的,关于基本c++类型大小的详细信息。