搜索
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 数组问题,求教
标题:
数组问题,求教
只看楼主
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
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册: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
帖 子:6809
专家分: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 编辑
]
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-08 09:43
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
6
楼
得分:0
局部变量的空间,在编译的时候就要确定的了,其实就是调整寄存器esp而已, esp始终指向栈顶部,调整的时候也就是开辟了堆栈空间了,
比如 int i;
那么32位机器对应的汇编吗可能是 sub esp 4,4也就是i的空间大小。这个在编译时候就已经确定下来了
动态的空间 只能在堆中new 或者malloc出来了
我行我乐
我的博客:
http://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
帖 子:6809
专家分:42393
注 册:2010-12-16
第
8
楼
得分:10
回复 7楼 x6988312
“任意大的数组” 这个,只要大小确定的,都可以用局部变量,不过这个大小有限制,默认每个线程堆栈空间好像为1M,所以数组的大小(也就是局部变量的中大小)不能大于这个值
如果你不想用new申请堆的空间,可以用全局数组。
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-08 22:30
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-390070-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.079374 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved