C++_sizeof函数

今天写插入排序用sizeof函数获取数组大小的时候发现与想的有点不同。

sizeof用于判断数据类型的长度

int main()
{
    int a[]={1,2,3,4,5,6};
    int *b=new int[10];
    cout << sizeof(a) << endl;
    cout << sizeof(b) << endl;
    return 0;
}

上面的代码输出结果为
这里写图片描述

一个int型占4个字节,所以先输出24
而第二行却输出4,这是因为b是一个指针类型,用于存放地址,它等于计算机内部地址总线的宽度,所以为4

如果想要获取指针指向区域的大小的话需要自己用一个变量来储存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`__typeof_ptr`不是一种通用的概念或术语,它在C/C++上下文里并不常见,因此解释起来较为困难。在大多数情况下,`sizeof`运算符是用来获取数据类型或表达式的大小(以字节为单位)。当涉及到指针类型时,`sizeof`同样可以直接应用于指针类型或指向该类型的指针,而不需要特殊的`__typeof_ptr`形式。 ### 通用解释: 如果你看到类似 `sizeof(ptr)` 的用法,这里 `ptr` 是一个指针变量或类型名,结果将返回该指针类型所占用的内存大小。在大多数现代系统中,普通指针类型(如 `int*`, `void*` 等)通常占用 sizeof(int) 或 sizeof(void*) 字节数,具体取决于系统的架构和指针的实现细节。 #### 示例: 假设在某系统下,`int*` 类型占用 4 字节,则: ```cpp int main() { int* ptr; printf("Size of int*: %d bytes\n", sizeof(int*)); } ``` 运行以上代码会显示输出“Size of int*: 4 bytes”,因为 `int*` 类型在此系统上占用 4 字节。 ### 相关问题: 1. `sizeof` 运算符能用于哪些类型? - `sizeof` 运算符可以用于任何类型,包括基本类型、数组类型、指针类型、引用类型、复合类型(如结构体或联合体)等。 2. `sizeof` 和其他类型查询函数的区别是什么? - `sizeof` 返回类型大小,而其他函数(如 `offsetof`、`typeinfo` 等)提供更深层次的信息,比如结构体成员的位置信息或是类型名称。 3. 指针类型为何总是被视为“轻量级”的数据类型? - 指针类型通常只占用很少的内存,这是为了让它们在各种场景下更为高效地使用。在大多数架构中,指针占用的字节数小于其所指向的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值