我见过像
这样的声明char strng[20]="";
strcpy(strng,"Some_String");
这里很清楚,当我声明strng[20]
时,我为这个字符数组保留了20个内存位置(字节),所以我可以将任何字符串复制到它,这个字符串长度差不多是20个字符。
此外,还有像
这样的声明char *strng;
strng=(char*)malloc(sizeof(char)*n);
将创建一个字符指针(2个字节),然后通过malloc
分配内存,并将分配的内存的基地址分配给strng
。这里将分配n
个字节。
但是,我看过像
这样的声明char *srtng;
strng="Some_Very_Long_Text";
那么,在这种情况下如何分配内存?在这里,我声明一个char指针(2个字节),然后为其分配一个字符串。如果此字符串的大小为n
,那么该字符串的存储方式和位置如何?我的指针只保存其基地址。何时分配内存以及如何分配?我甚至不在这里使用malloc
。