关于char型指针有关问题
关于char型指针问题
#include<iostream>
using namespace std;
void main()
{
char *p="hello world!";
char *q=new char[strlen(p)+1];
strcpy(q,p);//q=p;这两种写法有没有本质区别
cout<<p<<" "<<q<<endl;
}
------解决思路----------------------
有本质区别(但没有明显的表现区别), 指向的地址区域不同。p指向常量区(即不能对q进行写操作),q指向自由存储区
------解决思路----------------------
有本质区别(但没有明显的表现区别), 指向的地址区域不同。p指向常量区(即不能对p进行写操作),q指向自由存储区
------解决思路----------------------
------解决思路----------------------
p 的类型应该是const char *, 这就是区别
#include<iostream>
using namespace std;
void main()
{
char *p="hello world!";
char *q=new char[strlen(p)+1];
strcpy(q,p);//q=p;这两种写法有没有本质区别
cout<<p<<" "<<q<<endl;
}
------解决思路----------------------
有本质区别(但没有明显的表现区别), 指向的地址区域不同。p指向常量区(即不能对q进行写操作),q指向自由存储区
------解决思路----------------------
有本质区别(但没有明显的表现区别), 指向的地址区域不同。p指向常量区(即不能对p进行写操作),q指向自由存储区
------解决思路----------------------
strcpy(q,p);//这种写法没问题,就是将常量区的字符串的数据拷贝到你new的堆内存中来,但是在程序最后要delete
q=p;//这样的话就是把p的值赋值给q,那么你之前new的堆内存的首地址就被丢失了(本来是存在q中的),那么你就没法来释放这部分内存了,会造成内存泄漏
------解决思路----------------------
p 的类型应该是const char *, 这就是区别