|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 数组问题,求教
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
370
人关注过本帖
标题:
数组问题,求教
只看楼主
加入收藏
x6988312
等 级:
新手上路
帖 子:46
专家分:5
注 册:2012-3-26
结帖率:
100%
楼主
收藏
已结贴
√
问题点数:10 回复次数:7
数组问题,求教
void vector(int n)
{
float vec[n]={0};
cout<<vec[1]<<endl;
}
一个数组可不可以这样定义?其中void vector(int n)是自定义函数
搜索更多相关主题的帖子:
void
2012-12-07 20:02
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
2
楼
收藏
得分:0
自己试试就知道了啊
估计是不可以的
DO IT YOURSELF !
2012-12-07 20:04
举报帖子
使用道具
赠送鲜花
wuxia111111
等 级:
论坛游民
帖 子:32
专家分:60
注 册:2012-11-18
第
3
楼
收藏
得分:0
不行啊!
#include<iostream>
using namespace std;
void vector(int n)
{
float vec[n]={0}; //n必须为常量
cout<<vec[1]<<endl;
}
int main()
{
int m=5;
vector(m);
return 0;
}
2012-12-07 23:39
举报帖子
使用道具
赠送鲜花
StarFall
等 级:
黑侠
威 望:
1
帖 子:193
专家分:553
注 册:2012-10-1
第
4
楼
收藏
得分:0
试了。。不行。。
去追寻更高的技术领域。永不停止。
2012-12-08 06:39
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
5
楼
收藏
得分:0
你对局部变量理解不够深刻了
这个肯定不行的啦
局部变量的空间的大小在编译的时候就要知道的,float vec[n]={0}; 这样,n是变量,他的大小是不确定的,有参数传入,编译器不可能知道n是多少。无法开辟堆栈空间。
这样吧
#define
N 100
void vector()
{
float vec[N]={0};
cout<<vec[1]<<endl;
} // 样编译器知道开辟多少的空间
或者
#include<iostream>
using namespace std;
void vector(int n)
{
float *vec = new float[n]; // 不用栈空间,用堆空间
cout<<vec[1]<<endl; // 还没有赋值的哦,同时n = 1的时候就有内存违规了
delete []vec;
}
[
本帖最后由 yuccn 于 2012-12-8 09:44 编辑
]
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-08 09:43
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
6
楼
收藏
得分:0
局部变量的空间,在编译的时候就要确定的了,其实就是调整寄存器esp而已, esp始终指向栈顶部,调整的时候也就是开辟了堆栈空间了,
比如 int i;
那么32位机器对应的汇编吗可能是 sub esp 4,4也就是i的空间大小。这个在编译时候就已经确定下来了
动态的空间 只能在堆中new 或者malloc出来了
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-08 09:50
举报帖子
使用道具
赠送鲜花
x6988312
等 级:
新手上路
帖 子:46
专家分:5
注 册:2012-3-26
第
7
楼
收藏
得分:0
回复 5楼 yuccn
使用new就可以创建任意大小的数组,如果不使用new或malloc是不是就不能创建任意大小的数组了?也就是说,一定要事先声明数组的大小后
才能创建???
2012-12-08 21:44
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
8
楼
收藏
得分:10
回复 7楼 x6988312
“任意大的数组” 这个,只要大小确定的,都可以用局部变量,不过这个大小有限制,默认每个线程堆栈空间好像为1M,所以数组的大小(也就是局部变量的中大小)不能大于这个值
如果你不想用new申请堆的空间,可以用全局数组。
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-08 22:30
举报帖子
使用道具
赠送鲜花
8
1/1页
1
快速回复:
数组问题,求教
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.018595 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved