有点疑问不是很明白,关于new

beyonddream2008 2009-04-02 03:50:42


#include <iostream>
using namespace std;
int main()
{
char *ptr=new char[10];
ptr="hello";//不明白这里为什么可以直接赋值,C中不可以直接赋值,这里并没有构建对象啊,没有调用赋值构造函数吧
cout<<ptr<<endl;
return 0;
}*/
...全文
50 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyonddream2008 2009-04-02
  • 打赏
  • 举报
回复
不申请空间也可以直接赋值
beyonddream2008 2009-04-02
  • 打赏
  • 举报
回复
你的意思是我申请的10个字符的空间根本没有用到吧,而是把prt指向了const 字符串吧,我明白了,谢谢
  • 打赏
  • 举报
回复
ptr="hello"; //hello"是字符串常量,赋值给ptr开头的内存地址
mao_pu_hua 2009-04-02
  • 打赏
  • 举报
回复
"hello"其实是hello这个字符串的地址的。并不是对象。ptr也是地址。
ls,最好用delete。不然内存泄露
nuoshueihe 2009-04-02
  • 打赏
  • 举报
回复
申请了内存空间就可以直接赋值了
Cpp权哥 2009-04-02
  • 打赏
  • 举报
回复
一个字符串"hello"当作一个数据用的时候表示字符串常量"hello"的第一个字符的地址,也就是字符'h'的地址,ptr="hello"是把'h'的地址保存在ptr中,也就是让ptr指向这个字符而不再指向刚才new分配的空间。如果你是希望把字符串复制过去,应该用strcpy(ptr, "hello");。
h13826013646 2009-04-02
  • 打赏
  • 举报
回复
可以直接赋值的,因为ptr是一个指针来的,它所指向的是一个空间大小为10的放有字符的空间。这样赋值等于是把字符串的首地址给ptr

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧