我用VC++ 6.0
在程序里打印出sizeof("good morning") 为 13, 如下:int main()
{
    cout << sizeof("good morning") << endl;
    printf("size:%d",sizeof("good morning"));    return 0;
}但是如果debug, 在Watch 窗口输入sizeof("good morning"), 其值却是4.
why?

解决方案 »

  1.   

    你回得真快.
    rebuild 了, 一样.
    实际上在debug时, 在Watch 窗口输入任何sizeof("XXXXXXX")结果好象都是4.
      

  2.   

    当然,sizeof("dd")总是4,是首地址大小4字节,一百年不变,建议用strlen,
      

  3.   

    在watch里VC把"good morning"当成一个const char*指针,所以大小就是4
      

  4.   

    多谢各位.有人这样解释, 我觉得挺有道理:
    在程序里面,"good morning"是字符串常量,对此常量取大小,将返回串的大小在debug的watch窗口中,输入的"good morning"是变量(用户临时输入当然是要保存在一个char*变量里),取大小就是char*变量本身的大小,x86下就是4个字节.
      

  5.   

    sizeof()取指针地址的大小,是4
    要计算字符串大小,用strlen()