c++-C++中,定义的数组怎么由输入来确定维度

问题描述

C++中,定义的数组怎么由输入来确定维度
eg: int a[m][n]; 请问这个mn的值怎么通过用户输入来获取;

解决方案

int main()
{
int n;
int m;
int **p = new int*[m];
for(int i = 0; i < m; i++)
{
p[i] = new int[n];
}
return 0;
}

解决方案二:
数组一般都是编译时分配内存,必须知道大小,否则编译器报错,如果程序需要运行时分配存储空间的话,用动态内存分配方法

解决方案三:
scanf(""%d%d""&m&n);

解决方案四:
数组的维数,必须在定义时就确定,不能后续依靠变量的。
在 C 中,数组的维数采用变量,编译时会直接报错的。

可以考虑使用指针代替数组:按指针定义,按数组访问。

解决方案五:
不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:

#define FD 5 // ...
int a[3+2]b[7+FD];是合法的。

但是下述说明方式是错误的。
int n=5; int a[n];

可以定义一个一维的足够大的数据当作二维来用。
int c[5*8]mn;
m = 5;n=8;
for (int i=0;i<m;i++)
{
for (int k=0;k<n;k++)
{
c[i*n+k]=0;
}
}

解决方案六:
用new的方式,比如

int p = new int*[m];

for(int i = 0; i != m; ++i)
{
p[i] = new int[n];
}

for(int i = 0; i != m; ++i)
{
delete[] p[i];
p[i] = NULL;
}
delete[] p;
p = NULL;

解决方案七:
scanf(""%d%d""&m&n);
int** a = new int*[m];
for(int i=0; i<m; ++i)
{
a[i] = new int[n];
}

解决方案八:
用new运算符开辟空间,动态数组。

解决方案九:
静态数组的大小必须编译时确定,即固定大小,动态数据需要malloc或者new

解决方案十:
大家的回答有一定的问题,事实上自C99开始支持变长数组的(C++的标准记忆中也支持了)。示例如下:
int n;
scanf (""%d"" &n);
int array[n];
但是目前还没有能完美支持某一标准的编译器,是否能编译通过主要看你编译器。

时间: 2024-09-17 04:12:40

c++-C++中,定义的数组怎么由输入来确定维度的相关文章

android在xml文件中定义drawable数组、id数组等

假如我们需要在代码中为一组view设置相对应的一组图片资源时(如为listview/gridview的所有item设置一组对应的图片时),我们就可以在xml中定义一组代表图片的drawable数组,然后用代码进行读取. 开始我是这样做的: [java] view plaincopy <integer-array name="actions_images">       <item>@drawable/pencil1</item>       <

c++-请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同?

问题描述 请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同? 请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同? 为什么在VC6.0中认为示例程序的数组错误,而在dev C++中却没事 #include <iostream> #include <iomanip> //调用setw()函数 using namespace std; //bool str[101]; int main() { int

java文件输入问题-java中把整数数组的数据输入到文件中的问题

问题描述 java中把整数数组的数据输入到文件中的问题 我是java新手,把整形数组输入到文件中去为什么不是数字,是这些问号? 解决方案 BufferedWriter 用这个写 解决方案二: 写入的编码格式不对,用UTF-8格式试试 解决方案三: 我是用BufferedWriter写的啊 解决方案四: write(int c)这个方法其实输出的是c对应的character,会进行类型的转换,你可以看下输出的源码.如果你要输出整型的话,建议你后面加个空字符串输出吧,换成: bw.write(a[i

在VBS中定义字节数组Byte()介绍_vbs

晚上在 QQ 上看到昵称为"乱码"的好友回答了搜搜问问里一个问题: 在VBS中有办法定义字节数组么? 在VBS中有办法定义字节数组么?就是字节子类型数组(VarType是8209的那种)注意不是VB! 但是回答实在是不堪入目,连别人问什么都没搞懂,而且那人居然还满意,真不知道他在想什么. 闲来没事,我来简单回答一下.首先要搞清楚别人在问什么,VBS 是弱类型脚本语言,只有一种数据类型,称为 Variant,但是 Variant 可以进一步分为几种子类型,这里不展开,详见<VBSc

怎样定义一个对象数组用于存储输入的学生数据

问题描述 编写一个程序,输入N个学生数据,包括学号.姓名.成绩,要求输出这些学生数据并计算平均分.思路:   设计一个学生类Stud,除了包括no(学号).name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有成员函数disp(),用于输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分.在main()函数中定义了一个对象数组用于存储输入的学生数据.这是我写的直接写了两个学生对象进去,现在想自己输入学生数据(包括学号,姓名和成绩),并保存

Oracle定义联合数组及使用技巧_oracle

联合数组以前被称为PL/SQL表.在表中不能使用联合数组,只能将它们用作程序设计的结构体.只能在PL/SQL中访问联合数组. 注意到联合数组带来的一些关键问题是非常重要的.这些问题使我们介绍它们的用法时,需要采取一些特别的方法.这些问题包括: 联合数组不需要初始化,也没有构造函数语法.在对它们进行赋值以前,也不需要专门为其分配存储空间,也就不需要使用集合API的EXTEND方法. 在ORACLE 10G中,以及在ORACLE 10G以前的版本中,都可以使用数字索引联合数组.另外,在ORACLE

c语言数组与函数-如何在函数中给已经在主函数中定义好的数组赋值

问题描述 如何在函数中给已经在主函数中定义好的数组赋值 已经在main()中定义了一个长度为20的数组,想在定义的函数中给数组赋值,但一直报错,请问如何修改? void arrin(int *arr) { int i; arr[]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0}; for(i=0;i<20;i++) printf("%d",arr[i]); } main() { int testarr[20]; ............ } 解决方

JavaScript jQuery 中定义数组与操作及jquery数组操作_jquery

首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 声明有10个元素的数组 复制代码 代码如下: var a = new Array(10); 此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] 来调用,例如

java-Java中定义数组必须要指定长度吗,如果是为什么?

问题描述 Java中定义数组必须要指定长度吗,如果是为什么? Java中定义数组必须要指定长度吗,如果是为什么?今天写程序时,前面定义了一个数组是空的int[] a ={};但是在下面用a[i]循环赋值时会出现 java.lang.ArrayIndexOutOfBoundsException错误,当我用int[] a = new int[8];这种形式就不会出现这种错误,这是什么原因,求回答啊 解决方案 Java中的数组是定长的!你这样int[] a ={}; 定义出来的数组a 长度为0,已经是