如果你将一个字符指针指向一个内存块,你只是malloc()并在位置[0],[1],[2],[3]处给它输入字符,...,[n] malloc 是否已经在末尾提供了一个空终止符"\0",或者我必须在 char 数组的最后一个元素提供它?
int i;
char B; //has the characters hello
char *A=malloc(5*sizeof(char)); //4 bytes for hello + 1 byte for null terminator?
for(i=0; i<strlen(A);i++)
A[i]=B[i];
for 循环完成后,我应该在 A 的最后一个元素中添加一个空终止符还是 malloc() 已经提供了它?
是的,您需要显式放置一个空终止符。 malloc
只是返回指向 5 字节内存块的起始指针。
在 malloc
之后,A
包含垃圾值,因此需要显式分配