不明白
//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
为什么结果不一样呢?