Witam,
Mam sobie taki program:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
char* print(char* c);
int main() {
char a = 'A';
printf("%s", print(&a));
getch();
return 0;
}
char* print(char* c) {
char *word;
word = (char*)malloc(sizeof(*word)*3+1);
word[0] = *c;
word[1] = 'l';
word[2] = 'a';
word[3] = '\0';
return word;
}
Program wyświetla tekst "Ala". Mam jednak pytanie - czy to jest tak, że alokacja pamięci tworzy w tym wypadku tablicę? Dlaczego potem mogę sobie przypisywać literki do kolejnych indeksów ot tak?
I drugie pytanie. Program działa niezależnie od tego, czy przy mallocu mam sizeof(word) czy sizeof(*word). Czy wynika to z tego, że wielkość wskaźnika do chara i samego chara jest taka sama?