版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qit1314/article/details/90116157
书中页数:P139
代码名称:arraysizeof.cc sizeof_pgm.cc
//arraysizeof.cc
#include <iostream>
using std::cout; using std::endl;
#include <cstddef>
using std::size_t;
int ia[] = {0,1,2,3,4,5,6,7,8,9};
int main()
{
// sizeof(ia)/sizeof(*ia) returns the number of elements in ia
constexpr size_t sz = sizeof(ia)/sizeof(*ia);
int arr2[sz]; // ok sizeof returns a constant expression
cout << "ia size: " << sz << endl;
return 0;
}
//sizeof_pgm
#include <iostream>
using std::cout; using std::endl;
#include "Sales_data.h"
int main()
{
Sales_data data, *p;
sizeof(Sales_data); // size required to hold an object of type Sales_data
sizeof data; // size of data's type, i.e., sizeof(Sales_data)
sizeof p; // size of a pointer
sizeof *p; // size of the type to which p points, i.e., sizeof(Sales_data)
sizeof data.revenue; // size of the type of Sales_data's revenue member
sizeof Sales_data::revenue; // alternative way to get the size of revenue
cout << "short: " << sizeof(short) << "\n"
<< "short[3]: " << sizeof(short[3]) << "\n"
<< "short*: " << sizeof(short*) << "\n"
<< "short&: " << sizeof(short&) << endl;
cout << endl;
cout << "int: " << sizeof(int) << "\n"
<< "int[3]: " << sizeof(int[3]) << "\n"
<< "int*: " << sizeof(int*) << "\n"
<< "int&: " << sizeof(int&) << endl;
cout << endl;
cout << "Sales_data: " << sizeof(Sales_data) << "\n"
<< "Sales_data[3]: " << sizeof(Sales_data[3]) << "\n"
<< "Sales_data*: " << sizeof(Sales_data*) << "\n"
<< "Sales_data&: " << sizeof(Sales_data&) << endl;
cout << "Sales_data::revenue: " << sizeof Sales_data::revenue << "\n"
<< "data.revenue: " << sizeof data.revenue << endl;
int x[10];
int *ip = x;
// number of elements in x
cout << sizeof(x)/sizeof(*x) << endl;
// divides sizeof a pointer by sizeof an int
cout << sizeof(ip)/sizeof(*ip) << endl;
return 0;
}