dynamicka alokace C, retezce
Zdravim, potreboval bych vysvetlit situaci v nasledujicim programku:
int main(void){
char *p = NULL, *r = NULL;
r = "no nazdarek";
p = (char *) malloc(sizeof(char));
strcpy(p,r);
//p = "ahojky";
printf("delka r: %d\ndelka p: %d\n",strlen(p),strlen(r));
return 0;
}
Proc musim naalokovat misto pro p a pro r jsem nemusel? Je to proto, ze bez mallocku se nevi, kam p ukazuje? A proc staci pro "p" naalokovat pouze jeden char, kdyz "no nazdarek" ma 11 znaku? a jak je to s '\0' v tomto pripade? je na 12. miste '\0' nebo ne?
Nemelo by tam byt spis
p = (char *) malloc(sizeof(char) * strlen(r));
Diky za pomoc v pochopeni teto problematiky...