new int()和new int[]的问题!

foxjun 2003-01-07 02:02:53
以前没有注意这个问题请高手指教一下!
好象int 都是用new int()
char都是new char[]!
请问他们的用法的差异以及通常什么时候用[]或()!
...全文
1870 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IceboundRock 2003-01-07
  • 打赏
  • 举报
回复
[]用于分配数组
()用于初始化,它会在内存中生成一个临时对象
foxjun 2003-01-07
  • 打赏
  • 举报
回复
哎呀刚刚快手写错了!
i=10;
应该是*i=10;
我错了,认错!
foxjun 2003-01-07
  • 打赏
  • 举报
回复
大概知道了!要去写写看看!
谢谢!我晚上才结贴!
zengyh 2003-01-07
  • 打赏
  • 举报
回复
你的i是指针而不是变量,没有分配内存。所以得用new。
另外i不等于10,i的值是一个地址,*i才是10,也就是i所指的地址里的内容。
如果
int i;
i=10;
那是一点问题都没有,但你现在问的是动态分配内存的问题。
要赋值,当然也可以:
int *i;
i=new int;
*i=10;
point_to 2003-01-07
  • 打赏
  • 举报
回复
当有类的时候 new int(10)
会以10为参数调用构造函数!这个我了解!
我想知道它们通常在什么时候用!
如 int *i;
i=new int(10);
那么以上面的朋友说i=10吗;

不是!表示*i=10,就是指针的值为10了。

那么为什么不直接用i=10;呢?
有什么差异!为什么要用i=new int(10);呢?

int i=10;//在栈中分配的
i=new int(10);//在堆中分配的


cwanter 2003-01-07
  • 打赏
  • 举报
回复
int i=10;i的内存在堆栈上分配,由编译器管理其生存周期。int *i=new int(10);i指向的地址在堆上分配内存。由你自己管理其生存周期。你如果不及时delete i;就会造成内存泄漏。
SHIZUMARU 2003-01-07
  • 打赏
  • 举报
回复
new int(10)得到的是一个地址,不是整型。
耙子 2003-01-07
  • 打赏
  • 举报
回复
int *i;
i=new int(10);
应该说 (*i == 10);
i是个指针,它必须申请空间,
int *i;
i= new int;
*i= 10;
point_to 2003-01-07
  • 打赏
  • 举报
回复
就是上面的了!
foxjun 2003-01-07
  • 打赏
  • 举报
回复
当有类的时候 new int(10)
会以10为参数调用构造函数!这个我了解!
我想知道它们通常在什么时候用!
如 int *i;
i=new int(10);
那么以上面的朋友说i=10吗;
那么为什么不直接用i=10;呢?
有什么差异!为什么要用i=new int(10);呢?
cwanter 2003-01-07
  • 打赏
  • 举报
回复
new int(10)是分配一个int,用()中的10初始化。
new char[10]是分配10个int,没有初始化。
如果是类的话,new会调用类的默认构造函数。
Qtree 2003-01-07
  • 打赏
  • 举报
回复
()给new出来得内存初始化,[]是给出内存大小

69,380

社区成员

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

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