如上代码:
字符串可以在存放在数组、文字常量区、堆区
可以在数组和堆区中进行修改。
char *str = (char*)malloc(9); 这行代码用于动态分配一个包含 9 个字符的内存块,并将指向这个内存块的指针存储在 str 变量中。这个内存块将用于存储字符串。
strcpy(str, "I eat bread"); 使用 strcpy 函数将字符串 "I eat bread" 复制到 str 指向的内存块中。
free(str); 最后,使用 free 函数释放之前分配的内存块,以确保不会造成内存泄漏
补充:::
文子常量区:(文字常量不是指字符串常量)
文字常量又称为“字面常量”,包括数值常量、字符常量和符号常量。eg:
NUM:符号常量;
1:数值常量;
"be stronger":字符常量。
堆区:是动态分配内存的区域,通常用malloc()函数来申请调用该区域空间。相关函数还有calloc()函数,realloc()函数。
①malloc()函数,是动态申请一块儿内存空间,空间内的存储值为随机值。
②calloc()函数,是动态申请一块儿内存空间,并对其进行初始化。
③realloc()函数,是对已申请的空间动态扩容。扩容成功,则返回空间的起始地址,扩容失败则返回NULL,会直接丢弃原有空间。所以使用realloc()函数需要额外注意。