В некоторых определенных c случаях часто используются некоторые соглашения, такие как \0
для конца строки или NULL
для конца массива указателей. Но часто такого маркера конца массива нет, и вместо этого вам нужно вести подсчет длины.
Например, если у вас есть массив:
double a[10];
Вы может отслеживать длину, используя марко для ее определения, или вы можете использовать sizeof
для ее определения:
(sizeof(a) / sizeof(double))
или:
(sizeof(a) / sizeof(*a))
Обратите внимание, что последняя форма не требует знания типа элементов a
.
Люди часто пишут для них макросы. В этих случаях вы должны отслеживать длину и передавать ее любой функции, которая должна работать с массивом.