求问啊大神们~char*的有关问题嗯
求问啊大神们~char*的问题嗯
#include <iostream>
using namespace std;
int main()
{
char* a="abc";
char* b="abc\n";
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
cout<<sizeof("abc")<<endl;
cout<<sizeof("abc\n")<<endl;
system("pause");
return 0;
}
输出为什么是
4
4
4
5
。。。。
------解决方案--------------------
sizeof在程序编译前执行,其内容跟你填在括号内的标识符直接相关
a和b都是char*指针,任何指针的大小都是固定的,32位机下指针大小为4字节
"abc"是字符串字面量,sizeof时按C风格字符串(后补0结束符)计算其占用空间大小,为3+1=4字节
"abc\n"是字符串字面量,sizeof时按C风格字符串(后补0结束符)计算其占用空间大小,为4+1=5字节
------解决方案--------------------
cout<<sizeof("abc\n")<<endl;的值为5的原因是他将\n看做一个字符,实际是该字符串是"abc\n\0";
至于cout<<sizeof(a)<<endl 和 cout<<sizeof(b)<<endl;正如楼上所说:a和b都是char*指针,任何指针的大小都是固定的,32位机下指针大小为4字节。
#include <iostream>
using namespace std;
int main()
{
char* a="abc";
char* b="abc\n";
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
cout<<sizeof("abc")<<endl;
cout<<sizeof("abc\n")<<endl;
system("pause");
return 0;
}
输出为什么是
4
4
4
5
。。。。
------解决方案--------------------
sizeof在程序编译前执行,其内容跟你填在括号内的标识符直接相关
a和b都是char*指针,任何指针的大小都是固定的,32位机下指针大小为4字节
"abc"是字符串字面量,sizeof时按C风格字符串(后补0结束符)计算其占用空间大小,为3+1=4字节
"abc\n"是字符串字面量,sizeof时按C风格字符串(后补0结束符)计算其占用空间大小,为4+1=5字节
------解决方案--------------------
cout<<sizeof("abc\n")<<endl;的值为5的原因是他将\n看做一个字符,实际是该字符串是"abc\n\0";
至于cout<<sizeof(a)<<endl 和 cout<<sizeof(b)<<endl;正如楼上所说:a和b都是char*指针,任何指针的大小都是固定的,32位机下指针大小为4字节。