网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月02日
漏签
0
天
c++吧
关注:
591,718
贴子:
2,105,452
看贴
图片
吧主推荐
游戏
1
2
下一页
尾页
49
回复贴,共
2
页
,跳到
页
确定
<<返回c++吧
>0< 加载中...
new的 使用 我快疯了。。。
只看楼主
收藏
回复
铭诚windy
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
现在经测试已经可以这样编译了,那new 的作用,之前是“不知道要分配多大的内存的时候用new"还有啥意义。。。。??????所以什么时候用new
铭诚windy
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
铭诚windy
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
。。。。。。。。。。
铭诚windy
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
。。。。。。。。。。。。。。。
铭诚windy
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
。。。。。。。。。。。
战地巫师
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在你觉得p[n]不够大时用
铭诚windy
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我好像明白了一点点:
数组有两种类型,一种是函数体内的,是函数运行的时候分配在动态存储区的,编译的时候并不分配内存,只有运行的时候才分配;另一种是函数体外的,也就是全局变量,运行前就已经分配好了。
上面的程序例子,p数组是在main函数里面,所以输入n之后再执行创建数组,所以是合法的;如果p数组在main函数外面,要么int p[10000],也就是知道数组大小,要么int *p,然后再main函数里面 p=new int[n],也就是动态分配数组的大小;
是这么回事吗???
M_P_C_King
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不,是逗逼GCC的扩展骗了你
C++声明数组时长度必须是常量
只不过C99允许这么写
战地巫师
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
就是这样new得到内存,不然你想想还有其他方法让p数组存10个元素吗?
hi60year
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你试试看不用new的话在别的函数里运行的时候你的指针还能不能用
不要以为有个参数就行
_Khellendros
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
c99引入了变长数组,也就是数组的长度可以在运行期决定,但是大部分c++编译器都是不支持这个特性的,lz你用的编译器估计比较奇葩……
VX186743879
&
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
变长数组不是标准C++,必须用特定的编译器才能编译,而且变长数组长度不加限定的话有栈溢出危险。
不过,新手不懂一些安全性的问题时候应该少用new。需要动态数组的地方可以用std::vector<int>,涉及指针操作的话可以用std::unique_ptr<int, std::default_delete<int[]>>
我叫老虎99
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我目前发现,有人不确定数组长度,就会定义个不会超过的常量为数组最大值,比如一般出现100个数,你提前定义个常量200就好了……
拉风de小乐乐
|
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一般搞池子用new
380526481
|
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
定义数组时指定的数组大小不能是变量,也就是说数组大小只能是确定的。如果要使用变量指定数组的大小,就要使用new操作符。上面的代码中int p[n]是不能编译通过的,应该改为int* p = new int[n];要注意使用完p之后一定要用delete[] p释放p指向的内存,否则会造成内存泄露。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示