| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 637 人关注过本帖
标题:不明白
只看楼主 加入收藏
tymstill
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-1-28
结帖率:100%
收藏
 问题点数:0 回复次数:1 
不明白
//arrfun2.cpp -- function with an array argument
#include<iostream>
const int ArSize=8;
int sum_arr(int arr[],int n);

//use std:: instead of using directive
int main()
{
    int cookies[ArSize]={1,2,4,8,16,32,64,128};
// some systems require preceding int with static to
// enable array initialization
   
    std::cout<<cookies<<" = array addres, ";
// some systems require a type cast: unsigned(cookies)

    std::cout<<sizeof cookies<<" = sizeof cookies\n";
    int sum=sum_arr(cookies,ArSize);
    std::cout<<"Total cookies eaten: "<<sum<<std::endl;
    sum=sum_arr(cookies,3);
    std::cout<<"First three eaters ate "<<sum<<" cookies.\n";
    sum=sum_arr(cookies+4,4);
    std::cout<<"Last four eaters ate "<<sum<<" cookies.\n";
   
    system("pause");
    return 0;
}

//return the sum of an integer array
int sum_arr(int arr[],int n)
{
    int total=0;
    std::cout<<arr<<" = arr, ";
// some systems requires a type cast: unsigned(arr)
   
    std::cout<<sizeof arr<<" = sizeof arr\n";
    for(int i=0;i<n;i++)
       total=total+arr[i];
    return total;
}

运行结果是 sizeof cookies=32, sizeof arr=4

而在C++ Primer Plus书上说,sizeof cookies的值为16,而sizeof arr为4
为什么结果不一样呢?
搜索更多相关主题的帖子: function cookies include instead require 
2008-04-14 09:34
herolzx
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-25
收藏
得分:0 
这个跟系统(编译器)有关
C++没有强制规定存储每种内置类型的内存空间大小,对于int 可以是2byte 或者4byte
VC++ sizeof(int)=4 所以 sizeof(arr)= 4 * 8 =32;

 int sum_arr(int arr[],int n) arr 是个形参,一个只象整型(int)的指针。
2008-04-14 10:26
快速回复:不明白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012299 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved