1、C语言各数据类型在内存中占用的字节由编译器决定,本测试以VS2015的X86模式运行。
2、确定数据类型后,无论变量值是多少(不超出范围),都会占用固定的内存大小(由类型决定)。
3、内存的地址和大小以16进制表示,且单位是字节,所以1个16进制(0x00000001)表示一个字节,含有8个bit。
#include"stdio.h"
main()
{
int arr[3] = { 100,200,300 };
printf("各数据类型在内存中占用的字节:\n");
printf("int 类型占用%d个字节\n", sizeof(int));
printf("long 类型占用%d个字节\n", sizeof(long));
printf("float 类型占用%d个字节\n", sizeof(float));
printf("double类型占用%d个字节\n", sizeof(double));
printf("char 类型占用%d个字节\n", sizeof(char));
printf("arr[0]在内存的地址:%x\n", arr); //数组首元素可以代表地址arr[0]。
printf("arr[1]在内存的地址:%x\n", &arr[1]); //数组第二元素要加&。
system("pause");
return(0);
}
注意:
如果用&arr[1]-&arr[0],结果为1,相当于指针往后移动1位(p=p+1),此时的1不是字节数,代表的是指针变量值。