передача массива структуры в качестве параметра функции

typedef struct What_if { char price [2]; } what_if ; what_if what_if_var[100]; int format_input_records(); int process_input_records(what_if *what_if_var); int format_input_records() { if (infile != NULL ) { char mem_buf [500]; while ( fgets ( mem_buf, sizeof mem_buf, infile ) != NULL ) { item = strtok(mem_buf,delims); strcpy(what_if_var[line_count].trans_Indicator,item) ; printf("\ntrans_Indicator ==== : : %s",what_if_var[line_count].price); process_input_records(&what_if_var); line_count=line_count+1; } } } int process_input_records(what_if *what_if_var) { printf("\nfund_price process_input_records ==== : : %s",what_if_var[line_count]->price); return 0; } 

Я столкнулся с ошибкой здесь, может ли кто-нибудь рассказать мне, что я совершил здесь?

Назначение аргумента функции между типами ” struct {...}* ” и ” struct {...}(*)[100] ” не допускается.

Ожидание указателя на структуру или объединение.

Массив по существу уже является указателем на некоторое пространство памяти, где была выделена длина массива. Поэтому вам просто нужно:

 process_input_records(what_if_var); 

без &

Ошибка здесь:

 process_input_records(&what_if_var); ^ 

Вы берете адрес массива, который эквивалентен what_if** , а функция принимает только what_if* .

 process_input_records(what_if_var); 

Обратите внимание, что вы, вероятно, хотите передать размер массива в качестве второго параметра process_input_records , поэтому функция знает, сколько элементов находится в массиве:

 process_input_records( what_if_var, sizeof what_if_var / sizeof *what_if_var );