C++/C中 sizeof(指针)和sizeof(数组名)的区别

1、sizeof(array)/sizeof(int)的含义

    array是个数组

    sizeof (array)就是这个数组所占的内存总量(字节数),

     sizeof(int)就是单个所占的内存. 所以呢,

sizeof (array) / sizeof (int)就是array数组的元素的个数.

2、 sizeof(指针)和sizeof(数组名)

#include <iostream>
using namespace std;
template<class T>
int length(T& data)
{    
	return sizeof(data)/sizeof(data[0]);
}
int main()
{
	int data[]={2,45,7,8,9,23,4,6,7,8,0}; 
	int data1[12]; 
	int *data2 = new int[13]; 
	char *data3 = new char[10]; 
	cout<<length(data)<<" "<<sizeof(data[0])<<" "<<sizeof(data)<<endl; 
	cout<<length(data1)<<" "<<sizeof(data1[0])<<" "<<sizeof(data1)<<endl; 
	cout<<length(data2)<<" "<<sizeof(data2[0])<<" "<<sizeof(data2)<<endl; 
	cout<<length(data3)<<" "<<sizeof(data3[0])<<" "<<sizeof(data3)<<endl; 
	return 0;
}


提到了sizeof,那什么是sizeof?
首先看一下sizeof在msdn上的定义:
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
看到return这个字眼,是不是想到了函数?错了,sizeof不是一个函数,你见过给一个函数传参数,而不加括号的吗?sizeof可以,所以sizeof不是函数。网上有人说sizeof是一元操作符,但是我并不这么认为,因为sizeof更像一个特殊的宏,它是在编译阶段求值的。
结论:不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理。
参考自https://blog.csdn.net/qq_33344148/article/details/81361325

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chde2Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值