设为首页 加入收藏

TOP

C++sizeof使用规则及陷阱分析(2)
2014-11-23 21:32:08 来源: 作者: 【 】 浏览:9
Tags:sizeof 使用 规则 陷阱 分析

  (6)、向函数传递数组的问题。


  考虑下面的问题:


  1 #include


  2 using namespace std;


  3


  4 int Sum(int i[])


  5 {


  6 int sumofi = 0;


  7 for (int j = 0; j < sizeof(i)/sizeof(int); j++) //实际上,sizeof(i) = 4


  8 {


  9 sumofi += i[j];


  10 }


  11 return sumofi;


  12 }


  13


  14 int main()


  15 {


  16 int allAges[6] = {21, 22, 22, 19, 34, 12};


  17 cout<


  18 system("pause");


  19 return 0;


  20 }


  Sum的本意是用sizeof得到数组的大小,然后求和。但是实际上,传入自函数Sum的,只是一个int 类型的指针,所以sizeof(i)=4,而不是24,所以会产生错误的结果。解决这个问题的方法使是用指针或者引用。


  使用指针的情况:


  1 int Sum(int (*i)[6])


  2 {


  3 int sumofi = 0;


  4 for (int j = 0; j < sizeof(*i)/sizeof(int); j++) //sizeof(*i) = 24


  5 {


  6 sumofi += (*i)[j];


  7 }


  8 return sumofi;


  9 }


  10


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++sizeof使用规则及陷阱分析(3) 下一篇C++sizeof使用规则及陷阱分析(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: