Если функция должна знать длину
Если функция должна знать длину массива - передавайте ее как дополнительный аргумент:
int sum( int a[], int len ){ int s=0, i; for(i=0; i < len; i++) s += a[i]; return( s ); } ... int arr[10] = { ... }; ... int sum10 = sum(arr, 10); ...
Количество элементов в массиве TYPE arr[N]; можно вычислить специальным образом, как
#define LENGTH (sizeof(arr) / sizeof(arr[0])) или
#define LENGTH (sizeof(arr) / sizeof(TYPE))
Оба способа выдадут число, равное N. Эти конструкции обычно употребляются для вычисления длины массивов, задаваемых в виде
TYPE arr[] = { ....... };
без явного указания размера. sizeof(arr) выдает размер всего массива в байтах.
sizeof(arr[0]) выдает размер одного элемента. И все это не зависит от типа элемента (просто потому, что все элементы массивов имеют одинаковый размер).
Строка в Си - это последовательность байт (букв, символов, литер, character), завершающаяся в конце специальным признаком - байтом '\0'. Этот признак добавляется компилятором автоматически, когда мы задаем строку в виде "строка". Длина строки (т.е. число литер, предшествующих '\0') нигде явно не хранится. Длина строки ограничена лишь размером массива, в котором сохранена строка, и может изменяться в процессе работы программы в пределах от 0 до длины массива-1. При передаче строки в качестве аргумента в функцию, функции не требуется знать длину строки, т.к. передается указатель на Содержание массива, а наличие ограничителя '\0' позволяет обнаружить конец строки при ее просмотре.
С массивами байт можно использовать следующую конструкцию, задающую массивы (строки) одинакового размера:
char stringA [ITSSIZE]; char stringB [sizeof stringA];
В данном разделе мы в основном будем рассматривать строки и указатели на символы.
Операции взятия адреса объекта и разыменования указателя - взаимно обратны.
TYPE objx; TYPE *ptrx = &objx; /* инициализируем адресом objx */ *(&objx) = objx;
&(*ptrx) = ptrx;
Вот пример того, как можно заменить условный оператор условным выражением (это удастся не всегда):
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий