C++ sizeof 使用规则及陷阱分析

From: http://freeman.cnblogs.com/articles/sizeof.html 前言 50米的网站http://www.50mi.net开张了,所以50米邀请我给他写点什么。说实在的,作为一个资深的潜水员,我还真没动笔写过什么东西,所以绞尽脑汁也没想起来能写什么的。不过鉴于50米喜欢在小孩子面前臭屁的,就写一篇群里讨论很多的sizeof问题吧。 1、什么是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更像一个特殊的宏,它是在编译阶段求值的。举个例子: cout< < using namespace std; int Sum(int i[]) { int sumofi = 0; for (int j = 0; j < sizeof(i)/sizeof(int); j++) //实际上,sizeof(i) = 4 { sumofi += i[j]; } return sumofi; } int main() { int allAges[6] = {21, 22, 22, 19, 34, 12}; cout< < using namespace std; int Sum(int *i, unsigned int n) { int sumofi = 0; for (int j = 0; j < n; j++) { sumofi += i[j]; } return sumofi; } int main() { int allAges[] = {21, 22, 22, 19, 34, 12}; cout<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值