Что делает

#c #pointers

#c #указатели

Вопрос:

Хорошо, итак, мне дали некоторый «простой» код на C, который вызывает функцию, и мне нужно создать указанную функцию, которая преобразует температуру из F в C, а затем C в F. Однако я не совсем уверен, как обрабатывать все различные переменные, которые передаются функции.

вот существующий код:

 int main() 
{
  int degrees1 = 50, degrees2;
  char scale1 = 'F', scale2;
  convert_weight(degrees1, scale1, amp;degrees2, amp;scale2);
  printf("%d %c = %d %cn");
  degrees1 = 10;
  scale1 = 'C';
  convert_weight(degrees1, scale1, amp;degrees2, amp;scale2);
  printf("%d %c = %d %cn");
  return 0;
}
  

Я не понимаю, что означают все переменные в вызове функции.

Я бы знал, что делать, если бы мне не нужно было передавать все разные вещи в функцию, но, вероятно, не могу связываться с main .

Как мне написать функцию, которая принимает параметры этой формы?

Комментарии:

1. Итак, чтобы уточнить, с какой частью у вас больше всего проблем amp;degrees2, amp;scale2 ?

2. Этот вопрос слишком широкий — он сводится к «Как работают вызовы функций в C?» StackOverflow обрабатывает более конкретные вопросы. Я настоятельно рекомендую вам просмотреть имеющиеся у вас материалы и / или посмотреть несколько вводных руководств по C.

3. @SamIam Да, потому что я не знаю, что с ними делать в моей функции. Я пытался игнорировать их, но затем, когда я компилирую, я получаю уведомление о том, что «»предупреждение: больше «%» преобразований, чем аргументы данных [-Wformat] printf(«%d %c = %d %cn»);»» и я думаю, что это связано с указателями?

4. @MattKline Я прочитал вопрос и даже подумал, что OP не говорит об этом прямо, похоже, у него есть конкретный вопрос, за исключением того, что он просто не сделал так, чтобы это выглядело так из названия. Похоже, ему нужно понять amp;variablename синтаксис в c

5. @DanielLoveJr это вполне приемлемый вопрос. Вы просто саботировали себя своим названием Need help understanding everything this C code is doing . Когда ваш заголовок указывает, что вы need help with everything , тогда люди уже готовы поверить, что это плохой вопрос, прежде чем они даже начнут его читать.

Ответ №1:

Я думаю, вам нужно написать функцию с этим прототипом:

 void convert_weight(int degrees1, char scale1, int *degrees2, char *scale2);
  

Затем в теле функции вы можете использовать *degrees2 как значение ввода / вывода int , так и *scale2 ввод / вывод char .

В вашем простом коде вам не нужно больше возиться с указателями.

PS: Когда вы говорите:

 printf("%d %c = %d %cn");
  

вы, вероятно, хотите:

 printf("%d %c = %d %cn", degrees1, scale1, degrees2, scale2);
  

иначе это приведет к неопределенному поведению.

Комментарии:

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