Не удалось назначить указатель на символ массиву символов

#c #file #pointers #variables #linked-list

Вопрос:

Мне нужно назначить указатель на массив символов:

 char str1[17];
char* h="hey";
str1 = h;
 

Но я получаю эту ошибку : error C2440: '=' : cannot convert from 'char *' to 'char [17]' .

Я думал, что имя массива совпадает с указателем на символ, а имя массива-это адрес первого символа массива, поэтому назначение указателя на символ имени массива будет работать.

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

Как я могу это исправить?

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

1. если вы не можете это исправить. str1 -это постоянный указатель. это невозможно изменить. вы можете скопировать «привет» в str1 , но не изменять str1

2. В этом вопросе нет ничего о Win32, поэтому отредактировано, чтобы удалить тег winapi и упоминание API Win32.

3. Воспользуйся strcpy() .

Ответ №1:

Вы не можете str1 указать другой адрес.

Что вы можете сделать, так это использовать strncpy для копирования содержимого h в str1 .