C++的问题(新手)

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:23:40
#include<iostream>
using namespace std;
int main()
{
char *p=new char[10];
p="fdsa";
cout<<p;
delete p;
return 0;
}
程序运行出错,为什么?

char *p=new char[10];//p指向动态申请的空间
p="fdsa"; //p指向了"fdsa"的首地址,p的值改变了
delete p; //delete p,现在p不是指向那动态申请空间,不能用delete
//再者,删除删除数组是有delete []p;

将p="fdsa";改为strcpy(p,"fdsa");
delete p; 改为delete []p;

char *p=new char[10];
p="fdsa";

初始化完了再赋值, 然后还要 delete 。。。
你要知道等号是什么意思就知道这么写没戏了
想要拷贝字符串的话得用函数 strcpy

初始化完了再赋值,应该是cout<<*p;*p是取p中的内容,还有就是删除数组对象是应该是 delete []char;

1L的意思是:

#include<iostream>
#include<string>
using namespace std;
int main()
{
char *p=new char[10];
// p="fdsa";
strcpy(p,"fdsa");
cout<<p;
delete p;
return 0;
}

fas