Консультация № 195974
16.07.2019, 14:06
0.00 руб.
0 5 1
Здравствуйте! Прошу помощи в следующем вопросе:
Я недавно начал обучения языка си, и есть один вопрос с типом данных int у меня получилось объевлять переменные в одной функции давать значение и выводить в другой а с типом данных char такое не получается я смотрел в интернете ответ по этому вопросу но ничего не нашол.

Обсуждение

давно
Советник
400484
472
16.07.2019, 14:12
общий
Добрый день. Можно пример вашего кода.
Неизвестный
18.07.2019, 22:31
общий
Извините за качество фото.
Прикрепленные файлы:
baa55ce9f2db3fdd0a68e66a83fc849e.jpg
давно
Советник
400484
472
19.07.2019, 09:42
общий
Вот так все работает:
Код:

#include <stdio.h>

char array[6];

char* test()
{
strcpy(array, "Hello");

return array;
}

int main(int argc, char *argv[])
{
char* text = test();
printf("%s", text);
}


Так не работает:
Код:

#include <stdio.h>

char* test()
{
char array[6] = "Hello";

return array;
}

int main(int argc, char *argv[])
{
char* text = test();
printf("%s", text);
}

Почему? Все просто. Переменная array локальная переменная. Согласно времени жизни переменной array, она прекращает свое существование после выхода из функции.
давно
Старший Модератор
17042
808
21.07.2019, 18:49
общий
Адресаты:
Оформите ответ?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Советник
400484
472
22.07.2019, 09:12
общий
это ответ
Здравствуйте, 89993102578z!
Исходя из переписки в мини-форуме. Можно сказать следующие.
Если переменная создается внутри функции ее время жизни равна времени работы функции и передать значение за пределы функции не возможно.
Код:

char* test()
{
char array[6] = "Hello";
return array;
}

Но если переменная была создана за пределами функции и в функции происходит ее изменение, то значение уходит без проблем за пределы функции и с ней можно работать.
Код:

char array[6];
char* test()
{
strcpy(array, "Hello");
return array;
}

Для примера предлагаю почитать статью.
Форма ответа