Возврат строки из функции C

Vozvrat Stroki Iz Funkcii C



А нить последовательность символов, состоящая либо из одного символа, либо из нескольких символов и являющаяся важной структурой данных в компьютерном программировании. При работе с струны в C необходимо выполнить определенные операции над нить тип данных, такой как инициализация нить , назначение содержимого, объединение струны , сравнивая струны , и возврат нить .

Эта статья посвящена одной из таких операций в нить структура данных, которая возвращает нить из функции C.







Возврат строки из функции C

Как нить представляет собой массив символов, и чтобы вернуть строку из функции C, указатель на структуру строковых данных должен быть передан в качестве аргумента из вызывающей функции в вызываемую функцию в качестве параметра. Затем указатель можно использовать для указания на массив символов. Как только указатель указывает на массив символов, нить значение может быть возвращено из вызываемой функции с помощью оператора return.



Вы можете посмотреть на приведенный ниже пример для лучшего понимания.



#include

константный символ * мое имя ( ) {
возвращаться 'Джон' ;
}

внутренний основной ( пустота ) {
printf ( '%s' , мое имя ( ) ) ;
}





В приведенном выше коде вместо объявления переменной, как обычно, мы использовали с ней указатель, чтобы при возврате этой строки не возникало ошибки.

Выход




Функция C не может возвращать нить которая была указана как локальная переменная, поскольку переменная будет немедленно удалена (освобождена) после завершения работы функции, что сделает ее недоступной и вызовет предупреждение, как показано ниже:

#include

const char мое имя ( ) {
имя персонажа = 'Джон' ;
возвращаться имя;
}

внутренний основной ( пустота ) {
printf ( '%s' , мое имя ( ) ) ;
}

В этом коде предупреждение срабатывает, когда возвращается строка без любой указатель.

Выход


Итак, вы можете написать код следующим образом:

#include

константный символ * мое имя ( ) {
уголь * имя = 'Джон' ;
возвращаться имя;
}
внутренний основной ( пустота ) {
printf ( '%s' , мое имя ( ) ) ;
}

Выход


Переменные размещаются в стеке по умолчанию, что и является фактической причиной приведенного выше утверждения. Однако при объявлении указателя значение, на которое он указывает, размещается в куче, которая не очищается после завершения функции. После выделения памяти копия нить должен быть создан из исходной области памяти, на которую указывает указатель, и копия должна быть возвращена из вызываемой функции. Затем вызывающая функция будет иметь контроль над исходными строковыми данными, а вызываемая функция будет отвечать за освобождение выделенного пространства.

Заключение

Функция C может принимать указатель на нить в качестве аргумента и вернуть нить значение в результате операций, выполненных внутри вызываемой функции. Подход для достижения этого заключается в использовании указателя char*. Вызывающая функция будет отвечать за память, выделенную для хранения нить , а вызываемая функция отвечает за освобождение выделенного пространства.