6

What is the quickest way to find the number of elements in a static array and dynamic array?

2

1 Answer 1

10

There is no way of finding the number of elements in a dynamically created array. For a non-dynamic array, you can use sizeof(array)/sizeof(type). However, this is not as useful as it seems:

void f( int a[] ) {
   // sizeof(a) will be the size of a pointer, probably 4
}

int main() {
     int a[100];
     // sizeof(a)/sizeof(int) will be 100
     f( a );
}

This is because arrays decay into pointers when passed to functions. So in both cases, you probably need to remember the size of the array and pass it to functions as a separate parameter. So a function to sum an array (for example) would look like this:

int sum( int a[], int n ) {
    int total = 0, i;    
    for ( i = 0; i < n; i++ ) {
        total += a[i];
    }
    return total;
}
Sign up to request clarification or add additional context in comments.

2 Comments

Typically one would use 'sizeof(array)/sizeof(array[0])'. Additionally there may be non-standard, non-portable ways to find the number of elements in a dynamic array, but it's best to store the size separately on creation and pass it to anything that needs to know the size.
@Georg Please do not edit the technical content of my answers - I have written the code I posted quite consciously. If you think it can be improved, make a comment or post an answer of your own.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.