2 qq 34803835 qq_34803835 于 2016.05.04 23:00 提问

有没有大神看下 ,小弟刚学c++这个代码运行后输出str不是输出100为什么

#include
#include
using namespace std;
int main(void)
{
char *str = new char[100];
strcpy(str,"hello imooc");
cout << "*str";
delete[] str;
system("pause");
return 0;
}

5个回答

leilba
leilba   Rxr 2016.05.05 00:05
已采纳

如果是输出str内容的话或者是str字符串长度的话可以用以下方式:

 #include "iostream"
#include "string"
#include "vector"
using namespace std;

int main(void)
{
    char *str = new char[100];
    strcpy(str,"hello imooc");
    cout <<"str字符串内容是: " << str << endl;
    cout <<"str字符串长度是: " << strlen(str) << endl;
    delete[] str;
    return 0;
}

如果你仅仅只有str这个字符指针的话,你想要获取到数组整体大小,很遗憾,这个str指针做不到,你要把str定义为数组类型的才行:

#include "iostream"
#include "string"
#include "vector"
using namespace std;

int main(void)
{
    char str[100];
    strcpy(str,"hello imooc");
    cout <<"str字符串内容是: " << str << endl;
    cout <<"str字符串长度是: " << strlen(str) << endl;
    cout<<"str数组长度: "<< sizeof(str)/sizeof(char) <<endl;
    return 0;
}

qq_34803835
qq_34803835 谢谢大神
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.05.04 23:10

cout << "*str";
输出的是
*str
因为有引号。
去掉引号,输出的是hello imooc。
要输出100,需要用sizeof

ZGZ1002
ZGZ1002   2016.05.05 10:32

cout << "*str";中 "*str"是字符串,
所以输出的是
*str
因为有引号。
去掉引号,输出的是hello imooc。
要输出100,需要用sizeof

ZGZ1002
ZGZ1002   2016.05.05 10:32

cout << "*str";中 "*str"是字符串,
所以输出的是
*str
因为有引号。
去掉引号,输出的是hello imooc。
要输出100,需要用sizeof

qq_34803835
qq_34803835 懂了
一年多之前 回复
havedream_one
havedream_one   2016.05.05 10:52

"*str" 会当做字符串输出,变量不需要加引号

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!