设为首页 加入收藏

TOP

C++sizeof使用规则及陷阱分析(2)
2014-11-23 21:32:08 】 浏览:7035
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)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目