Мне не хватает фундаментальной точки при передаче значений.Передача значений функции
В моем коде, я написал этот прототип/функции:
void drawFont (char A[],unsigned char length, char x1, char y1, uint16 FGcolor);
я вызываю функцию с помощью вызова, как это:
drawFont ("William",7,15,25,YEL,0);
или
drawFont ("W",1,15,25,YEL,0);
Оба эти отлично работайте в коде. Если я рассмотрю A [0] в функции, я увижу значение «57», представляющее ASCII 'W'. Все хорошо и хорошо.
Мой вопрос/проблема: Когда я пытаюсь повторить «W», используя значение ASCII вместо строкового представления, мой код не Пример:
drawFont (57,1,15,25,YEL,0);
Значение A [0] в код равен: 0, но адрес A равен 57. Так почему-то компилятор предполагает, что я хочу передать указатель? Я смущен, почему он прошел строку отлично, но не значение?
Заранее благодарен программисту-новичку C.
«как-то компилятор предполагает, что я хочу передать указатель» - это * точно *, что 'char A []' находится в контексте этого списка параметров. Отладчик и/или 'printf («% p:% s », A, A);' вверху 'drawFont' для вашего Первые два примера, скорее всего, будут интересными. – WhozCraig
Не совсем. отладчик, вот как я знаю, что происходит. Я действительно хочу, чтобы printf был доступен мне! Это будет упрощать вещи. Но это микроконтроллер, поэтому большинство моих вопросов являются теоретическими, так как выход трудно тестировать. Обычно мне приходится изучать ценности и спрашивать: «Почему?». – Cartoondog
прототип показывает 5 параметров, однако каждая из выписок показывает 6 параметров. Компилятор должен был выпустить предупреждающее сообщение (как минимум). для каждого из вызовов. вы использовали параметр в компиляции что-то вроде (для компилятора GCC) -Wall? – user3629249