在c‘\0’中,作为文字的空终止符需要4个字节(因为它在内部只是零),但是为什么在字符数组或字符串中使用它时只需要1个字节?这是编译器的魔力吗?
程序员在使用动态内存分配来处理空终止符大小时是否需要特别注意?下面的节目可以吗?
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("size of null-termination: %lu\n", sizeof('\0')); //outputs 4 bytes
printf("size of 0: %lu\n", sizeof(0)); // outputs 4 bytes
char *message = malloc(10);
message[0] = 'A';
message[1] = 'B';
message[2] = 'C';
message[3] = '\0'; // takes 1-byte in below memory layout(attached image)
message[4] = 'a';
message[5] = 'b';
message[6] = 'c';
message[7] = '\0'; // takes 1-byte in below memory layout(attached image)
message[8] = 'X';
message[9] = 'Y';
printf("\n");
return 0;
}