C++ sizeof使用和指针变量占字节数

sizeof(数据类型)
此运算符功能:返回值就是该数据类型所占的字节数。

sizeof(变量名)
此运算符功能:返回值就是该变量所占的字节数。

    cout << "char ==" << sizeof(char) << endl;
    cout << "int ==" << sizeof(int) << endl;
    cout << "double ==" << sizeof(double) << endl;
    char c='a';
    int i = 10;
    double d=10.1;
    cout << "c ==" << sizeof(c) << endl;
    cout << "i ==" << sizeof(i) << endl;
    cout << "d ==" << sizeof(d) << endl;*

输出:
char ==1
int ==4
double ==8
c ==1
i ==4
d ==8

一个指针变量占几个字节呢??
指针的内存大小只有CPU的位数有关,与指针类型无关。32位的都是4个字节,64位的是8个字节,
下面是64位下的代码执行结果

    char *ptr_c = &c;
    int *ptr_i = &i;
    double *ptr_d = &d;
    cout << "ptr_c ==" << sizeof(ptr_c) << endl;
    cout << "ptr_i ==" << sizeof(ptr_i) << endl;
    cout << "ptr_d ==" << sizeof(ptr_d) << endl;

输出:
ptr_c ==8
ptr_i ==8
ptr_d ==8

结论: 取决于是64位编译模式还是32位编译模式(注意,和机器位数没有直接关系)
在64位编译模式下,指针的占用内存大小是8字节
在32位编译模式下,指针占用内存大小是4字节

注意:如果数组变量被传入函数中做sizeof()运算,则和指针的运算没有区别。

  void Func( char str[100] )
{
    cout<<"Fun: == "<<sizeof(str)<<endl;
}

void test_sizeof(){
  char str[] = "Hello world";
  cout<<"str == "<<sizeof(str)<<endl; //结果=strlen("Hello world")+1;数值中要留一个元素保存字符串结束符
    Func(str);}

输出:
str == 12
Fun: == 8

你可能感兴趣的:(c++,mfc,开发语言)