【发布时间】:2021-11-13 06:30:32
【问题描述】:
如果 char 的数据类型是 1 个字节,那么指向它的 char 指针不应该也是 1 个字节吗? 为什么我的 char 指针 [8 字节] 中有多余的数据?
#include <iostream>
#include <conio.h>
using namespace std;
int main ( );
void ShowCharacter ( char *p_character );
int main ( )
{
char character = '\0', *p_character;
p_character = &character;
int size = sizeof ( p_character );
cout << "Pass a variable 'char character' as a pointer!" << endl;
character = getch ( );
ShowCharacter ( p_character );
cout << "Character (main): " << character << " (size: " << size << ")" << endl;
return ( 0 );
}
void ShowCharacter ( char *p_character )
{
char letter = p_character [ 0 ];
// Data type Array >> sizeof ( p_character ) is 8 bytes, why is it an array and not
// a char?
int size = sizeof ( p_character );
cout << "Character (ShowCharacter): " << letter << " (size: " << size << ")\n";
// change letter to p_character to see what I mean.
return;
}
我正在尝试用 C++ 编写我的第一个井字游戏。了解这一点会对我有所帮助。
【问题讨论】:
-
"指向它的 char 指针不应该也是 1 个字节吗?"不,当然不应该。如果是这样,您将只能拥有 256 个不同的
char对象。char*指针不存储那个字节 - 它存储那个字节的内存地址。您计算机的 RAM 有超过 256 个不同的地址。 -
“指向它的char指针不应该也是1字节吗?”:请解释您认为它应该是的原因,以便我们识别误解。比如,你认为“char指针”是一种“char”吗?
-
“我正在尝试用 C++ 编写我的第一个井字游戏。理解这一点会对我有所帮助。” -- 会吗?如何?您可能对无关紧要的细节过于担心。如果我要编写井字游戏,我怀疑数据类型的确切大小是否与我的任何代码相关。 (充其量,我可能会利用
sizeof(char) <= sizeof(char*)这一事实。) -
这能回答你的问题吗? Is the sizeof(some pointer) always equal to four? 或者 sizeof a pointer,更多关于“为什么”的问题。
标签: c++ arrays pointers char sizeof