name[i] = (char*)malloc(4 * sizeof(char));
`name` 是 **`char**` (二級指針) 或 **`char* name[]` (指針數組)**。該語句為第 `i` 個指針元素分配 4 字節內存,可存放 3 字符 + `\0` 的短字符串。
#include
#include
#include
int main() {
char *name[2]; // 指針數組,2 個 char*
name[0] = (char*)malloc(4 * sizeof(char));
strcpy(name[0], "asd");
name[1] = (char*)malloc(4 * sizeof(char));
strcpy(name[1], "ddd");
printf("%s\n%s\n", name[0], name[1]);
free(name[0]);
free(name[1]);
return 0;
}
name (棧上數組) 堆內存 +------+ +------+ | name[0] | ──────────→ | 'a','s','d','\0' | (4 bytes) +------+ +------+ | name[1] | ──────────→ | 'd','d','d','\0' | (4 bytes) +------+ +------+