Odpowiedź: Nie.
Ale można szukać alternatyw.
To nie działa, bo tablica jest zmienną lokalną - kończy życie po zakończeniu funkcji.
Rozwiązanie nie jest stabilne - “brak pewności rezerwacyjnej”.
Jak to zatem zrobić?
#include <stdio.h>
#include <stdlib.h>
int *create_array(int size) {
int *arr = (int *)malloc(size * sizeof(int));
if (arr == NULL) {
return NULL;
}
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
return arr;
}
int main() {
int size = 5;
int *array = create_array(size);
if (array == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
free(array); // Zwolnij pamięć
return 0;
}
Alternatywa - zrobić procedurę, a argument funkcji jest tablicą (wskaźnikiem).
Napis - ciąg składający się z co najmniej jednego znaku.
Znaki cudzysłowu nie są częścią łańcucha.
Język C nie posiada typu string
/łańcuchowego. Wszystkie napisy traktowane są jako tablice typu char
. Ostatnim znakiem w tablicy jest znak \0
.
srtlen
a sizeof
#include <stdio.h>
int main()
{
char * napis = "ab6sWR";
char * kopia;
kopia=napis;
printf("%s\n",napis);
printf("%p\n",napis);
printf("%p\n",&napis);
printf("%s\n",kopia);
printf("%p\n",kopia);
printf("%p\n",&kopia);
return 0;
}
czy można to zrobić notacją tablicową?
scanf
https://pl.wikibooks.org/wiki/C/scanf
https://en.cppreference.com/w/c/io/fscanf
gets
https://pl.wikibooks.org/wiki/C/gets
https://en.cppreference.com/w/c/io/gets
fgets
Wskaźnik czy tablica?
#include <stdio.h>
int main()
{
char slowo[5];
gets(slowo);
printf("%s\n",slowo);
puts(slowo);
return 0;
}
#include <stdio.h>
int main()
{
char slowo[5];
gets_s(slowo, 4*sizeof(char));
printf("%s\n", slowo);
puts(slowo);
return 0;
}
scanf
- do znaku niedrukowanego, reszta do końca liniigets
- mało bezpieczna przy przepełnieniufgets
- dodaje koniec linii na końcu napisuprintf
https://pl.wikibooks.org/wiki/C/printf
https://en.cppreference.com/w/c/io/fprintf
puts
https://pl.wikibooks.org/wiki/C/puts
https://en.cppreference.com/w/c/io/puts
fputs
https://gist.github.com/pjastr/100599c74e34cd814f671daccd0668b0
https://gist.github.com/pjastr/37e259e243a7b9d26e9c45d528c84c02
https://gist.github.com/pjastr/8c059084a44781c9407ee6ab0a3c5ef3
https://gist.github.com/pjastr/1285dbb398d7cfed9d372b7ed292d599
https://gist.github.com/pjastr/f59613feebb3900634cbe41658ae2be7
wchar_t
Polskie znaki?
czy to możliwe?
Tak nie robimy (!)