Dlaczego kiedy deklarujemy za pomocą funkcji malloc tablicę i przypisujemy jej adres do wskaźnika do char to możemy go potem zwrócić z funkcji i kompilator nie daje ostrzeżeń, a kiedy zadeklarujemy tablicę to wtedy nie będziemy mogli zwrócić adresu tej tablic, a kompilator da ostrzeżenie w postaci
warning: function returns address of local variable [-Wreturn-local-addr]
return bufor2;
char * some_sentence(char * strg, int k);
int main() {
puts(some_sentence("WHERE AM I?", 5));
return 0;
}
char * some_sentence(char * strg, int k){
char * bufor = (char * ) malloc(sizeof(char) * strlen(strg) + 1);
strcpy(bufor, strg); // kopiujemy do bufora
char bufor2[] = "Who am I?";
return bufor2; // zmienną wskaźnikową bufor możemy zwrócić, a już pierwszego adresu tablicy bufor2 nie
}