char只有一个字节,为什么char*却不是一个字节,我们书上给的答案是4,但我VS上是8
这个和编译器有关,16位的编译器指针是2个字节,32位4个字节,64位8个字节
在C++中,char*指针占用的字节数是由编译器决定的,通常与所使用的机器的字长有关,即32位系统中通常是4字节,64位系统中通常是8字节。这是因为指针需要存储一个地址值,而64位系统的地址空间比32位系统更大,因此指针占用的字节数也相应增加。
char类型本身只有一个字节,但是在使用时,它可能会被转换为更大的类型,例如在数组中使用时,编译器会将char类型转换为整数类型来提高数组访问效率。此外,在内存对齐的过程中,编译器也可能会添加一些填充字节来对齐内存,这也可能导致char*指针占用的字节数增加。
因此,char*指针占用的字节数并非固定的,而是由编译器和机器的具体实现决定的。
供参考:https://baike.baidu.com/item/%E6%8C%87%E9%92%88/2878304?fr=aladdin
不知道你这个问题是否已经解决, 如果还没有解决的话: