Почему вывод char* "stuff here"[int here] является char*?

в моем коде есть строка char* chunktl[140];, которая определяет chunktl как массив символов, позже код заполняет эти значения, но это не имеет значения, есть еще одна строка int arrayloc = relx + 7 +(8-rely)*16;, которая определяет arrayloc как целое число, какие переменные не имеют значения однако ошибка

error: passing argument 1 of ‘pixrender’ makes integer from pointer without a cast [-Wint-conversion]
  206 |                                                 pixrender(chunktl[arrayloc]);
      |                                                           ~~~~~~~^~~~~~~~~~
      |                                                                  |
      |                                                                  char *
terraria.c:81:22: note: expected ‘char’ but argument is of type ‘char *’
   81 | char* pixrender(char a)
      |                 ~~~~~^


все еще появляется и предполагает, что chunktl[arrayloc] — это строка?

Я пробовал преобразовать arrayloc в различные типы (unsigned int, long и т. д.), но это не помогло.

🤔 А знаете ли вы, что...
C широко используется в разработке операционных систем, включая UNIX и Linux.


1
51
1

Ответ:

Решено

char* chunktl[140]; создает массив из 140 указателей (char *).

chunktl[arrayloc] возвращает один из этих указателей.

Вы передаете один из этих пунктов pixrender.

pixrender нужен char, а не указатель.

Если вам нужен массив из 140 значений char, вам нужен char chunktl[140];.