How to compute size of an array parameter in a function?
Consider below C++ program:
The above output is for a machine where size of integer is 4 bytes and size of a pointer is 8 bytes.
The cout statement inside main prints 40, and cout in findSize prints 8. The reason is, arrays are always passed pointers in functions, i.e., findSize(int arr) and findSize(int *arr) mean exactly same thing. Therefore the cout statement inside findSize() prints size of a pointer. See this and this for details.
How to find size of array in function?
We can pass a ‘reference to the array’.
The above program doesn’t look good as we have hardcoded size of array parameter. We can do it better using templates in C++.
We can make a generic function as well:
40 40 80 80
Now the next step is to print the size of a dynamically allocated array. It’s your task man ! I’m giving you a hint.
This article is contributed Swarupananda Dhua Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- How to pass a 2D array as a parameter in C?
- Parameter Passing Techniques in C/C++
- Difference between Argument and Parameter in C/C++ with Examples
- Get the stack size and set the stack size of thread attribute in C
- How to find size of array in C/C++ without using sizeof ?
- array::size() in C++ STL
- size of char datatype and char array in C
- Generate an array of given size with equal count and sum of odd and even numbers
- How does free() know the size of memory to be deallocated?
- Why is the size of an empty class not zero in C++?
- Extended Integral Types (Choosing the correct integer size in C/C++)
- How to quickly swap two arrays of same size in C++?
- 2D vector in C++ with user defined size
- list::empty() and list::size() in C++ STL
- queue::empty() and queue::size() in C++ STL
- stack empty() and stack size() in C++ STL
- deque::empty() and deque::size() in C++ STL
- priority_queue::empty() and priority_queue::size() in C++ STL
- map::size() in C++ STL
- set::size() in C++ STL