注册 登录
编程论坛 C++教室

[求助]数组赋值问题

a8451727 发布于 2007-08-06 00:01, 524 次点击
如过我想先确定数组里面的的数,然后再让他自己判定长度,该怎么办?(用cin输入)

不是这样哦:array[]={1,2,3,4,5,6};

而是在程序运行后输入,可以的吗?
4 回复
#2
aipb20072007-08-06 00:18
那天不是说了,你还没理解,在编译时不能确定大小的数组,就不行,只能使用动态数组。

静态:
int arr[const_size_n] = {1,2,3,4,5,6,7,8..n}; //n个元素(n为常量)
int arr[] = {1,2,3,4,5,6,7,8..n}; //n个元素(n为常量)

动态:
int *parr = new int[size_n]; //n为变量,意思你可以在程序运行后确定

ex:
int size_n;
cin >> n;
int *parr = new int[size_n];


你说的先输入数,再判断自身大小,直接的用动态数组也不可行,因为你要能输入一个数,必须保证事先有这个数的位置(也就是堆内存)。
你不怕麻烦,就自己封装一个类。图简单就用容器类 比如:vector。

vector<int> ivec;
int num;
while (cin >> num)
ivec.push_back(num);
cout << ivec.size() << endl; //可以自己根据保存的元素确定大小


ps:这么晚了还在学习啊,精神可嘉,睡觉了哈,有什么问题先留着,明天帮你看!

[此贴子已经被作者于2007-8-6 0:19:40编辑过]

#3
a84517272007-08-06 01:04
以下是引用aipb2007在2007-8-6 0:18:46的发言:
那天不是说了,你还没理解,在编译时不能确定大小的数组,就不行,只能使用动态数组。


那天说的是看不明白啊
而且看得头都晕了

[此贴子已经被作者于2007-8-6 1:47:36编辑过]

#4
圆圆的鸟蛋2007-08-06 01:14

声明静态数组的时候,系统会为数组即时分配空间,所以必须先确定数组的大小。。要想根据实际的大小来声明数组,就只有用new了。。
打个比方:静态数组就是火车,准载人数是固定了的,可以不再满,但绝不能超载,而且准载人数是之前就固定了的。。动态分配就好像是向铁道部打电话,请求根据实际情况确定车厢的数量。。

#5
a84517272007-08-06 01:46
看了好几遍帖子,然后MSDN了一下,终于明白了````呼。
我以前就一直忘记了个 *P 可以是数组,看来看去,看半天都不明白。
谢谢大家了

[此贴子已经被作者于2007-8-6 1:47:12编辑过]

1