Я получаю синтаксическую ошибку, операнд ‘*’ должен быть указателем, но имеет тип «char».

#c #char

Вопрос:

Я получаю эту ошибку, и я не знаю, почему

 void mem_move(void* dest, void* src, unsigned size) {  char* d = dest, * s = src;  char buff[100];  char* b = buff;  for (int i = 0; i lt; size; i  )  *b[i] = *s[i];  for (int i = 0; i lt; size; i  )  *d[i] = *b[i]; }   void main() {  char buffer[] = "one two three ";  mem_move(buffer   3, buffer, 10);  char buffer2[] = "one two three ";  mem_move(buffer2, buffer2   3, 10); }  

Я должен упомянуть, что я нахожусь в visual studio community edition 2022

Комментарии:

1. Это из *b[i] = *s[i]; того, что должно быть b[i] = s[i];

2. b[i] и d[i] есть такой тип char .

Ответ №1:

В этих заявлениях

 *b[i] = *s[i];  *d[i] = *b[i];  

вы разыменовываете указатели два раза, используя оператор индекса [] и оператор разыменования * .

Писать

 b[i] = s[i];  

и

 d[i] = b[i];  

Обратите внимание, что в соответствии со стандартом C функция main без параметров должна быть объявлена как

 int main( void )