string的实现实际内部成员就慎脊只有一个指针,所有的字符串空间都是通过分配后挂在这个指针上(通过析构函数完成对内存的释放)。
所以无论你输入什么,sizeof(x)的结果值永远是一个指针的大小值,在32位 *** 作系统上,都是4字节。
注信孝肢意:sizeof *** 作是个编译期 *** 作符,不是一个动态运行的函数。
即:假如你在32位 *** 作系统编译sizeof(int)。那么它的值是4个字节。
如果这个程序编译滑世的可执行文件(没有在64位 *** 作系统重新编译)到64位 *** 作系统可以运行。那么这个值依然是4字节。会在编译程序的时候,用4替换所有sizeof(int)的代码。
!!!!!!!!!sizeof是编译时就决定的结果,所以这个题的这种思路其实并不正确。(通过输入来通过sizeof得到类型的宽度,无论怎么改,只要是sizeof得到的只是编译时的类型宽度)
#include<卜告stdio.h>int main()
{
printf("sizeof(int)=%d\n", sizeof(int))
printf("世弊闷sizeof(float)=%d\n", sizeof(float))
printf("sizeof(double)=%d\n", sizeof(double))
printf("sizeof(char)=%d\n", sizeof(char))
//依次为 4 4 8 1
搜弯 return 1
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)