char*[]元素每个占用4个字节,char []每个占用1个字节?

Was*_*ama 2 c arrays pointers

为什么以下代码的输出是这样的?

char str[] = {'i', 't', 'i', 's', 'm', 'e', '\0'}; //this code equates to 7 bytes
char* str[] = {'i', 't', 'i', 's', 'm', 'e', '\0'}; //this code equates to 28 bytes
Run Code Online (Sandbox Code Playgroud)

das*_*ght 7

此代码不符合您的想法.它使用char常量来初始化char*指针数组的元素.这样的"指针"并不指向你的角色; 相反,它们具有相应字符的数值!

系统上的每个字符指针都是4个字节长,这解释了结果.