【发布时间】:2013-09-17 05:04:17
【问题描述】:
如果您将 char 指针指向一块内存,您只需 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() 已经提供了它?
【问题讨论】:
-
单个字符
char B;不能包含hello。不过你可能有char B[] = "hello";。 -
对
strlen(A)的调用至少在访问未初始化的内存时会引发未定义的行为。
标签: c pointers memory null malloc