用于动态创建的数组的sizeof字符数组

时间:2014-03-14 19:16:34

标签: c++

我需要根据模式长度动态创建一个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

2 个答案:

答案 0 :(得分:2)

这是因为table是指针,而不是数组。并且体系结构中指针的大小为8个字节。

答案 1 :(得分:0)

sizeof(expression)只是sizeof(type of that expression)的一种语法替代。

在您的示例中,sizeof(table)只是sizeof(char*)的语法替代。指针的值或它指向的char或它指向的数组从不考虑结果,只考虑类型。