今天上课老师提问了个问题,关于stelen函数求字符串长度的问题。以前一直对这样的问题存在困扰,我想今天应该解决了。
下面通过一个函数,来说明我的问题.
int main(int argc,char* argv[])
{
char* a = "abcdef"; // 定义成字符指针
cout << sizeof(a) << endl; // 注意sizeof后面跟的永远都是类型,因此指针类型的大小为4个;
cout << strlen(a) << endl; // 测试a字符指针中所包含的字符的个数。为6个,注意这里不会包括\0这个结束符。
char b[9] = {"abcdef"};
cout << sizeof(b) << endl; // 同样这里的b的大小为9,因为sizeof只看类型。
cout << strlen(b) << endl; // strlen只看该空间中到底有多少个字符。
b[9] = "abcdefgh"; // 这里要注意了,b[9]中要存放的实际字符的个数只能是8个。因为最后有一个结束符。
cout << b << " ";
return 0;
}
总结如下,所有涉及到长度问题时,根本与结束符没有关系。只是在实际存储中会出现这样的问题。依次,以后要记住了。求大小的情况,要不能出现错误的问题了。