#c #data-structures #types #char
#c #структуры данных #типы #символ
Вопрос:
итак, я внедряю эту шахматную программу на C и пытаюсь интегрировать в протокол winboard … одна из функций, которые, по их словам, мне нужно написать для этого, должна иметь следующую подпись:
char *MoveToText(MOVE move); // converts the move from your internal format to text like e2e2, e1g1, a7a8q.
мой вопрос в том …. текстовые форматы чем-то похожи на e2e2 …. но тип возвращаемого значения этой функции — char … и, насколько я могу понять, char — это всего лишь один символ….
итак, почему они говорят мне использовать эту подпись?
или я ошибаюсь, и на самом деле char также может хранить несколько символов, таких как e2e2, e1g1 и т.д.?
Комментарии:
1. У вас есть URL документации, на который вы случайно ссылаетесь?
2. Я только что получил это из этой темы: open-aurec.com/wbforum/viewtopic.php?f=24amp;t=51739
Ответ №1:
Да, в C символ * указывает на массив символов. C обрабатывает массивы символов как строки, заканчивающиеся нулевым байтом.
Комментарии:
1. Разве строки ASCII / UTF-8 не должны быть массивами символов, заканчивающимися нулем? Нет требования к нулю в конце символа[] (хотя это распространенное соглашение)
2. @Phil Строка — это просто массив символов, но я предполагаю, что то, что она заканчивается нулем, делает ее строкой, а не просто массивом. Но если вы попытаетесь использовать ненулевой завершающийся символ[] в функции, которая ожидает строку, вы либо получите ошибку segfault, либо мусор, либо другое неожиданное поведение.
Ответ №2:
Возвращаемый символ * или строка в стиле c =)
Ответ №3:
char *
является указателем на char — адрес последовательности символов.
Ответ №4:
Он возвращает указатель на символ char, который в основном является c-строкой.
Взгляните на это руководство: http://www.cprogramming.com/tutorial/lesson9.html