Почему вывод 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 и т. д.), но это не помогло.

который определяет chunktl как массив символов - это не так. Он определяет массив указателей на char. OTOH, char blah[140]; — это массив символов

Eugene Sh. 21.08.2024 23:47

ох, спасибо, теперь я понял

user20695956 21.08.2024 23:59
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
2
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

Традиционное прохождение. +1

Ted Lyngmo 22.08.2024 00:53

Есть ли способ преобразовать указатель в символ, на который он указывает?

user20695956 22.08.2024 02:27
*p ___________
ikegami 22.08.2024 02:36

Другие вопросы по теме