2015-11-18 5 views
-2

У меня есть linklist c-program, который работает правильно, но последнее требование заключалось в том, что глобальные переменные не должны использоваться. Поэтому мне пришлось перепроектировать все, чтобы не пропускать параметры, но есть части, которые трудно перепроектировать, а некоторые функции вызывают функции и другие функции, один пример представлен на дисплее.Передача параметров на разных уровнях функций

int main() { 
     display(&head, &tail); 
} 

void display(myrec **head, myrec **tail) { 
     sort(&*head, &*tail) 
     then sort again call function swap 
} 

Мой вопрос в том, как правильно передать параметры несколько раз. Программа не работает правильно, используя sort (& * head, & * tail), синтаксическая ошибка отсутствует, но в настоящее время отсутствуют данные о данных. Я попытался закодировать все в функции отображения только для проверки, и это так, поэтому я предполагаю, что я делаю что-то неправильно при передаче переменных. Благодарю.

Не рекурсия, голова и хвост являются переменными, которые содержат состояние списка ссылок, поэтому при обмене это изменение, мне также необходимо отразить изменения в корневом звонящем, а другая часть программы нуждается в новом состоянии головы и хвоста.

+4

'& * x = x'; это избыточно. Пожалуйста, создайте [mcve] –

+0

, в чем причина отрицательных голосов? –

+0

Как вы определяете 'sort'? – MikeCAT

ответ

0

Повторная передача параметров в другую функцию добавляет «&» снова и снова. Выход из дисплея заставит переменную голову и хвост отражать изменения, внесенные в другие функции. Не уверен, что это лучший способ, но он работает.

Ex.

display(&head, &tail); 

void display(myrec **head, myrec **tail) { 
sort(&*head, &*tail) 
} 

void sort(myrec **head, myrec **tail) { 
swap(&*head, &*tail) 
} 
+0

'& * E' эквивалентно' E' (N1256 6.5.3.2 сноска 87 оператора адреса и косвенных указателей), поэтому вы используете «head» и «tail» вместо '& * head' и' & * tail'. – MikeCAT