Есть ли разница между двумя приведенными ниже функциями, в обоих случаях не возвращается адрес локальной переменной, но использование f1() fn возвращает правильное значение 4, но не f2(). Также в третьем случае я прав, что строковая константа не хранится в стеке, поэтому, когда мы возвращаем указатель, она будет работать нормально. Также тогда, где хранятся строковые константы?Строковое постоянное хранилище
int* f1()
{
int* a=(int*)4;
return a;
}
int* f2()
{
int a=4;
return &a;
}
char* f3()
{
char* p="abcd";
return p;
}
Есть ли разница между двумя функциями - и вы дали три функции! :) – tuxuday
Для записи вам не следует возвращать указатели на такие переменные стека. Эта память, скорее всего, будет использована для чего-то еще после выхода функции. –
Не нужно было комментировать комментарий «это домашнее задание» на данный момент lol – UNECS