我需要根据模式长度动态创建一个char数组,即plen。当我做sizeof(表格)时,我得到8.为什么我得到8而不是3。
int main()
{
char *pattern="aaa";
int plen=strlen(pattern);
char *table=new char[plen+1];
for(int i=0;i<plen;i++)
{
table[i]=pattern[i];
}
cout<<sizeof(table)<<plen<<table;
return 0;}
我得到的输出是83aaa..8用于sizeof(表)3用于plen,aaa用于表,其具有存储值为pattern
答案 0 :(得分:2)
这是因为table
是指针,而不是数组。并且体系结构中指针的大小为8个字节。
答案 1 :(得分:0)
sizeof(expression)
只是sizeof(type of that expression)
的一种语法替代。
在您的示例中,sizeof(table)
只是sizeof(char*)
的语法替代。指针的值或它指向的char或它指向的数组从不考虑结果,只考虑类型。