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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值