To sum it up beforehand,
sizeof(array name)/sizeof(element of array)
You can get it by .
sizeof
returns the overall size of the array.
For example,
int main() {
/*Arrays of 10 elements*/
char charArr[10];
int intArr[10];
long longArr[10];
double doubleArr[10];
printf("sizeof(char)\t:%lu,\tsizeof(charArr):\t%lu\n", sizeof(char), sizeof(charArr));
printf("sizeof(int)\t\t:%lu,\tsizeof(intArr):\t\t%lu\n", sizeof(int), sizeof(intArr));
printf("sizeof(long)\t:%lu,\tsizeof(longArr):\t%lu\n", sizeof(long), sizeof(longArr));
printf("sizeof(double)\t:%lu,\tsizeof(doubleArr):\t%lu\n", sizeof(double), sizeof(doubleArr));
}
Output:
sizeof(char) :1, sizeof(charArr): 10
sizeof(int) :4, sizeof(intArr): 40
sizeof(long) :8, sizeof(longArr): 80
sizeof(double) :8, sizeof(doubleArr): 80
Can you see the relationship between sizeof(type)
and sizeof(array)
here?
Everyone has declared an array of 10 elements, and sizeof
is exactly 10 times the
sizeof
.
Therefore, the number of elements in the array can be obtained as sizeof/sizeof
.
However, it is always troublesome to specify the type of elements in the array, such as sizeof(int)
or sizeof(long)
, and when the casting changes, the code must be fixed, so it is usually written like sizeof(charArr[0])
.
For example,
int main() {
inta[100]; //number of elements 100
printf("sizeof(arrangement name): %lu\n", sizeof(a)); //400
printf("sizeof" element: %lu\n", sizeof(a[0]); //4
printf("number of elements = sizeof(array name)/sizeof(element of array): %lu\n", sizeof(a)/sizeof(a[0])); //100
}
Output:
sizeof (array name): 400
size of (element of array): 4
Number of elements = sizeof(arrangement name)/sizeof(element of arrangement): 100
If you're lazy to divide every time you get an array size, define and write a macro as follows.
#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
int a[17];
int n = NELEMS(a);
© 2024 OneMinuteCode. All rights reserved.