// fig07_10.cpp // Sizeof operator when used on a built-in array's name // returns the number of bytes in the built-in array. #include #include size_t getSize(double* ptr); // prototype size_t getSize_span(std::span ptr); void print_arr(auto a){ for (auto x: a) std::cout << x << " "; } void fill_arr(auto& a){ for (auto x: a) x = 0; } int main() { double numbers[20]; // 20 doubles; occupies 160 bytes on our system auto numbers_span {std::span(numbers)}; fill_arr(numbers_span); std::cout << "Number of bytes in numbers is " << sizeof(numbers)<<"\n"; std::cout << "Actual number of elements : " << sizeof(numbers)/sizeof(double) << "\n"; std::cout << "Number of bytes returned by getSize is " << getSize(numbers) << "\n"; std::cout << "Actual number of elements returned by getSize_span is " << getSize_span(numbers) << "\n"; print_arr(numbers_span); } // return size of ptr size_t getSize(double* ptr) { return sizeof(ptr); } size_t getSize_span(std::span ptr) { return ptr.size(); } /************************************************************************** * (C) Copyright 1992-2022 by Deitel & Associates, Inc. and * * Pearson Education, Inc. All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * **************************************************************************/