VC++中的一维数组定义 100
想定义个一维数组value[]doublevalue[];为何还要指定大小,然后我想定义个intm;doublevalue[m];也不行最后定义doublevalue[1...
想定义个一维数组value[]
double value[];
为何还要指定大小,然后我想定义个
int m;
double value[m];
也不行
最后定义 double value[100];
才可以,难道只有这样才可以吗?
我想定义个一维数组,它的长度由一个整形数m控制,
这该怎么做呢?难道只能定义时只能用常数来规定数组长度
高手帮忙解答下 展开
double value[];
为何还要指定大小,然后我想定义个
int m;
double value[m];
也不行
最后定义 double value[100];
才可以,难道只有这样才可以吗?
我想定义个一维数组,它的长度由一个整形数m控制,
这该怎么做呢?难道只能定义时只能用常数来规定数组长度
高手帮忙解答下 展开
11个回答
推荐于2016-03-13 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464978
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
C语言中定义一维数组如下:
数据类型 数组名[数组长度]; // 不进行初始化的数组
数据类型 数组名[数组长度] = {数组元素初始化值}; // 进行初始化的数组
举例如下:
// 定义一个int型的未进行初始化数组data1
int data1[5];
// 定义一个int型的数组data2,并对数组中各元素进行初始化
int data2[5] = {5, 2, 4, 0, 3};
数据类型 数组名[数组长度]; // 不进行初始化的数组
数据类型 数组名[数组长度] = {数组元素初始化值}; // 进行初始化的数组
举例如下:
// 定义一个int型的未进行初始化数组data1
int data1[5];
// 定义一个int型的数组data2,并对数组中各元素进行初始化
int data2[5] = {5, 2, 4, 0, 3};
展开全部
你在使用VC++,那么我建议你学点C++,还得学点STL
至于当前解决你的问题,参考下面的代码:
//下面这行的头文件里有你需要的长度不定的“数组”(带引号因为它不是真的数组)
#include<vector>
//下面这一行为了方便,=你学了C++就知道了
using namespace std;
int main()
{
int arrLen=10;
//...干了很多你认为重要的事之后
//下面这行弄出一个int类型的数组叫intArray
vector<int> intArray;
//下面这一行把intArray的大小变为10个int,当你还可以继续变成其他大小
intArray.resize(arrLen);
//下面的操作就很像数组了,注意它不是真真的数组,学了C++后你也不会像现在这样用的,我只是给你解决手头的问题
intArray[0]=1;
intArray[1]=2;
//...
}
至于当前解决你的问题,参考下面的代码:
//下面这行的头文件里有你需要的长度不定的“数组”(带引号因为它不是真的数组)
#include<vector>
//下面这一行为了方便,=你学了C++就知道了
using namespace std;
int main()
{
int arrLen=10;
//...干了很多你认为重要的事之后
//下面这行弄出一个int类型的数组叫intArray
vector<int> intArray;
//下面这一行把intArray的大小变为10个int,当你还可以继续变成其他大小
intArray.resize(arrLen);
//下面的操作就很像数组了,注意它不是真真的数组,学了C++后你也不会像现在这样用的,我只是给你解决手头的问题
intArray[0]=1;
intArray[1]=2;
//...
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LZ的代码在阅读上可以理解,但实际上编译不可以通过,[]里面的值必须为常量,而你的m是整形变量,值是不定的。
试想一下如果有这么段代码
int m=5;
double value[m]={1,2,3,4,5}; //这样看起来好像很合理
m=7;
cout<<value[m-1]<<endl; //到这里全乱套了,根本没有value[6]这个元素
事实上上面的代码是错的,为了避免上面的定义混乱,所以[]里面的值必须为常量,如果LZ想用上面那种模式定义的话也行,代码改成这样
const int m=5; //在int 前面加上关键字const
double value[m];
const int m 表示定义一个常量m,m的值不能再更改,如果有这么一段代码
const int m=5;
m=6;
编译器就会报错,m是常量,值不能再更改了。
全手打,够详细了吧
试想一下如果有这么段代码
int m=5;
double value[m]={1,2,3,4,5}; //这样看起来好像很合理
m=7;
cout<<value[m-1]<<endl; //到这里全乱套了,根本没有value[6]这个元素
事实上上面的代码是错的,为了避免上面的定义混乱,所以[]里面的值必须为常量,如果LZ想用上面那种模式定义的话也行,代码改成这样
const int m=5; //在int 前面加上关键字const
double value[m];
const int m 表示定义一个常量m,m的值不能再更改,如果有这么一段代码
const int m=5;
m=6;
编译器就会报错,m是常量,值不能再更改了。
全手打,够详细了吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
让我来给你解释下吧:
1.double value[],之所以错了了,是因为在一维数组定义的时候,要指定数组成员个数或直接给数组赋初值(这样你赋的值个数可以不等于数组的大小).
比如 double value[100]就定义一个成员为100的一维数组;
double value[100]={1,2,3,4}即定义了一个一维数组,他的前4个成员的值.
2.int m;
double value[m],为什么会错!
首先数组中的成员数(即"[]"中的数),必须为常量,而你的int m,是定义了一个整型的变量m(就算改为int m=100还是错的).其次你必须说明m是常量,即用#define M 100(常量的定义一般用大写字母,"100"可以去掉,定义位置放在所有预处理命令后,如#include <stdio.h>),这样你再使用double value[M]就不会有错.
3.double value[100]对了,是因为"100"是系统内部植入的常量当然正确了!
1.double value[],之所以错了了,是因为在一维数组定义的时候,要指定数组成员个数或直接给数组赋初值(这样你赋的值个数可以不等于数组的大小).
比如 double value[100]就定义一个成员为100的一维数组;
double value[100]={1,2,3,4}即定义了一个一维数组,他的前4个成员的值.
2.int m;
double value[m],为什么会错!
首先数组中的成员数(即"[]"中的数),必须为常量,而你的int m,是定义了一个整型的变量m(就算改为int m=100还是错的).其次你必须说明m是常量,即用#define M 100(常量的定义一般用大写字母,"100"可以去掉,定义位置放在所有预处理命令后,如#include <stdio.h>),这样你再使用double value[M]就不会有错.
3.double value[100]对了,是因为"100"是系统内部植入的常量当然正确了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组是在编译时确定大小的,所以要用常量表达式给出他的大小;
可以用动态空间分配new来动态分配一定的空间,配合指针使用
估计你还没学到那,现在你只学到静态数组这,静态和动态数组有不同的公用,一般能用静态的尽量用静态
可以用动态空间分配new来动态分配一定的空间,配合指针使用
估计你还没学到那,现在你只学到静态数组这,静态和动态数组有不同的公用,一般能用静态的尽量用静态
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询