Если у вас есть указатель, p
, оператор разыменования указателя *
"следует" за указателем, поэтому выражение *p
вычисляет любой объект, на который указывает указатель.
Во многих ситуациях имя массива, такое как m_name
, может вести себя как указатель. Таким образом, *m_name
соответствует первому char
в массиве, так как это тип, имя массива которого, когда интерпретируется как указатель, указывает на.
Поскольку строки в C представлены в виде указателей на символы, вы не должны разыменовывать указатель, а возвращать его в целости.
Многие предлагали использовать strncpy()
для записи входной строки в ваш массив, так как он выполняет (вроде) проверку границ. Однако, это не оптимально, его семантика нечетна, и копирование строки в ограниченный буфер на самом деле не то, для чего она была разработана. Лучше выяснить, есть ли в вашей среде различные функции snprintf()
, и использовать их следующим образом:
snprintf(m_name, sizeof m_name, "%s", name);