Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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...

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny