сегмент кода приведен ниже компилирует и при запуске дает результат в виде:Странная указатель проблема
$ make
gcc -g -Wall -o test test.c
$ ./test
string
/* code1 */
#include<stdio.h>
char *somefunc1()
{
char *temp="string";
return temp;
}
int main(int argc,char *argv[])
{
puts(somefunc1());
return 0;
}
тогда небольшой модификации этого кода дает различные результаты:
$ make
gcc -g -Wall -o test test.c
test.c: In function ‘somefunc1’:
test.c:5: warning: function returns address of local variable
$ ./test
/* code 2 */
#include<stdio.h>
char *somefunc1()
{
char temp[] ="string";
return temp;
}
int main(int argc,char *argv[])
{
puts(somefunc1());
return 0;
}
Почему это происходит?
Конечно, вы могли бы получить лучший заголовок, чем «проблема странного указателя». – Eyal