C++中将 sizeof( )用于指针的结果

C++中将 sizeof( )用于指针的结果

sizeof 是一个关键字、操作符,也是一个编译时运算符,其作用是返回一个对象或者类型所占的内存字节数

对于sizeof的理解,sizeof:

首先是一个关键字,也是一个操作符,而非函数。

其次求长度,返回一个对象或者类型所占的内存字节数。

总结一下:sizeof更像一个特殊的宏,它是在编译阶段求值的。不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理。

sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。指针变量的sizeof 值与指针所指的对象没有任何关系。

sizeof() 的使用方法:

sizeof(object); 	//sizeof(对象);
sizeof(type_name); 	//sizeof(类型);
sizeof object; 		//sizeof对象;【不常用】

您知道,指针是包含内存地址的变量。因此无论指针指向哪种类型的变量,其内容都是一个地址——一个数字。在特定的系统中,存储地址所需的字节数是固定的。因此,将 sizeof( )用于指针时,结果取决于编译程序时使用的编译器和针对的操作系统,与指针指向的变量类型无关,以下示例程序演示了这一点:

#include <iostream>
using namespace std;

int main()
{
    cout << "sizeof fundamental types -" << endl;
    cout << "sizeof(char) = " << sizeof(char) << endl;
    cout << "sizeof(int) = " << sizeof(int) << endl;
    cout << "sizeof(double) = " << sizeof(double) << endl;

    cout << "sizeof pointers to fundamental types -" << endl;
    cout << "sizeof(char*) = " << sizeof(char*) << endl;
    cout << "sizeof(int*) = " << sizeof(int*) << endl;
    cout << "sizeof(double*) = " << sizeof(double*) << endl;

    return 0;
}

输出:

sizeof fundamental types -
sizeof(char) = 1
sizeof(int) = 4
sizeof(double) = 8
sizeof pointers to fundamental types -
sizeof(char*) = 4
sizeof(int*) = 4
sizeof(double*) = 4

分析:

输出表明, 虽然 sizeof(char)为 1 字节, 而 sizeof(double)为 8 字节, 但 sizeof(char *) 和 sizeof(double *) 都是 4 字节。这是因为不管指针指向的内存单元是 1 字节还是 8 字节,存储指针所需的内存量都相同。

注意:

示例程序的输出表明,将 sizeof 用于指针的结果为 4 字节,但在您的系统上结果可能不同。这里的输出是使用 32 位编译器编译代码时得到的,如果您使用的是 64 位编译器,并在 64 位系统上运行该程序,可能发现将 sizeof 用于指针的结果为 64 位,即 8字节。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值