【发布时间】:2013-09-14 02:59:05
【问题描述】:
#include <iostream>
int main(int argc, char* argv[])
{
int pt[4] = {'0','\0',0};
std::cout<<"size of pt: "<<sizeof(pt)<<std::endl;
std::cout<<"strlen of pt: "<<strlen((char*)pt)<<std::endl;
}
结果是:
size of pt: 16
strlen of pt: 1
当我将int pt[4] = {'0','\0',0}; 更改为int pt[4] = {'\0','0',0};
结果是
size of pt: 16
strlen of pt: 0
为什么?
【问题讨论】:
-
字符串以 '\0' (null) 字符结尾。所以第一个确实有一个值,然后字符串结束,而第二个没有值。不过,这只是一个假设。