+ 26

Passing arrays to functions

In the source of this lesson the array and additional the size of the array (number of elements) is passed as a numerical value. I think this can lead to problems when adding more elements to the array and forgetting to correct the number of elements. I think it would be better to calculate the number of elements in an array: void printArray(int arr[], int size) { for(int x=0; x<size; x++) { cout <<arr[x]<< endl; } } int main() { int myArr[3]= {42, 33, 88}; //printArray(myArr, 3); //replace "3" by: printArray(myArr,sizeof(myArr)/sizeof(int)); //<---NEW } what do you think regards lothar

19th Feb 2018, 4:25 PM
Lothar
Lothar - avatar
5 Answers
+ 11
dear all, thanks for all your comments. I learned some new thinks.
21st Feb 2018, 6:21 PM
Lothar
Lothar - avatar
+ 8
@Lothar, Nice tips mate, I think it's a good idea for such cases, and we can also use sizeof(myArr)/sizeof(myArr[0]) just in case we want to change the type for the array, knowing that explicit use of sizeof(int) will work for the int type only : )
19th Feb 2018, 4:40 PM
Ipang
+ 3
Consider std::array instead, that way you donā€™t have to worry about calculating or keeping track of the size. You can also use templates to have the compiler pass around the size for you, like this: https://code.sololearn.com/c1wqPSpEJnuT/?ref=app
19th Feb 2018, 7:35 PM
aklex
aklex - avatar
+ 1
This is the way you always have to pass sizes, Lothar . But since you're in C++, std::array (#include <array>) is far better choice, it won't decay to a pointer when passing to a function, therefore you don't need to pass the size as a separate argument in the first place! Rule: Always prefer std::array, unless you have a strong reason to prefer inbuilt arrays. Happy day! ;)
29th Jul 2021, 1:32 AM
Rishi
Rishi - avatar
0
Find two group of number having same average
3rd Oct 2020, 1:35 PM
S.Dayakar Reddy