#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
синтаксис в c5. @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. Ах, хорошо, вот почему мои печатные материалы вообще не работали, оки, большое спасибо, это то направление, в котором я нуждался, извините, что мой пост был тупым, я просто не уверен, как иногда формулировать вещи.