Ваша функция ожидает указатель на структуру. Этот аргумент может быть отдельным экземпляром этой структуры или элементом массива структуры структуры. Как
struct myStruct {
int a, b;
long cL, dL;
char e;
} struc1, struc2, record[20];
и прототип функции будет
function( struct myStruct *ptr);
Теперь вы можете передать структуру в функцию:
function( &struct1 );
// or
function( &record[ index] );
Теперь ваша путаница возникает из-за неправильного представления о том, что синтаксис array[i]
также может рассматриваться как указатель, как мы можем делать с именем array
.
record
- имя массива - дает адрес первого члена массива (указатели также указывают на адреса памяти), следовательно, его можно передать функции. Но record[index]
, это другое.
На самом деле, когда мы пишем record[ index]
, это дает нам значение, помещенное туда, которое не является указателем. Следовательно, ваша функция, которая принимает указатель, не принимает его.
Чтобы сделать его приемлемым для функции, вам нужно будет передать адрес элементов массива, т.е.
function( &record[ index ] );
Здесь &
оператор дает адрес элементов массива.
Также вы можете использовать:
function( record + index );
Здесь, как мы знаем, record
- это адрес первого элемента, и когда мы добавляем в него index
, он дает адрес соответствующего элемента, используя арифметику указателей.
Надеюсь, это было полезно.