char*
- это способ объявления указателя на переменную char
.Это полезно, когда вам нужна строка с неизвестной длиной.
1-й пример:
char name[10];
strcpy (name, "type_your_name_here"); //overwrites the first argument with the second.
Здесь вы резервируете 10 частей памяти.Вы можете использовать их все или ваше имя может быть просто «Джек», которое, если мы учитываем специальный символ '\0'
, который идет в конце каждой строки, занимает всего 5 фрагментов памяти.Это означает, что у вас есть 5 оставшихся фигур, которые вы не используете.
Может быть, ваше имя длиннее 10 символов, где вы будете хранить дополнительные?Вы не сможете.Потому что вы дали статическое объявление вашему массиву символов.
2-й пример:
char *name;
Это означает, что вы только что объявили переменную-указатель, в которой вы будете хранить адрес первого символав твоей строке.Это дает больше свободы и гибкости в использовании.Является ли ваше имя длинным или коротким, предопределенные строковые функции, такие как strcpy
и strcat
могут обрабатывать выделение памяти для вас.
Короче:
Насколько я понимаю, в первомНапример, вы определили как начальную, так и конечную точки вашей строки, что ограничивает то, что вы в нее помещаете, а также может тратить пространство памяти.Во втором примере вы указали только начальную точку, которая дает большую свободу использования и экономию памяти.Я не знаю никаких недостатков во втором примере, это всего лишь мой первый год обучения этому.Поэтому, возможно, эксперты смогут пролить свет на этот вопрос ярче, чем я.