精华内容
下载资源
问答
  • 简单的动态输入数组2

    千次阅读 2018-09-03 23:02:57
    #include<iostream> #include<cstdlib&...请输入计算的个数为:"; cin>>n; int *arr=new int[n];//就在介个地儿!!!!! cout<&lt...
    #include<iostream>
    #include<cstdlib>
    using namespace std;
    int main(){
        int n,sum=0,i=0;
        cout<<"请输入计算的个数为:";
        cin>>n;
    int *arr=new int[n];//就在介个地儿!!!!!
        cout<<endl;
        for( i=0;i<n;i++){
    
        cout<<"input ptr["<<i<<"]";
        cin>>arr[i];
    
    }
    for(i=0;i<n;i++)
    sum+=arr[i];
    cout<<sum<<endl;
    delete []arr;
    arr=NULL;
    return 0;
    } 

    之前一直卡在某处是错的, 找了好久,才发现那会输入字符串用的是char,然后输出肯定不对啦~~~应该是int型

    展开全文
  • C语言中动态分配数组

    万次阅读 多人点赞 2018-06-21 12:57:42
    很多人在编写C语言代码的时候很少使用动态数组,不管什么情况下通通使用静态数组的方法来解决,在当初学习C语言的时候我就是一个典型的例子,但是现在发现这是一个相当不好的习惯,甚至可能导致编写的程序出现一些...

    很多人在编写C语言代码的时候很少使用动态数组,不管什么情况下通通使用静态数组的方法来解决,在当初学习C语言的时候我就是一个典型的例子,但是现在发现这是一个相当不好的习惯,甚至可能导致编写的程序出现一些致命的错误。尤其对于搞嵌入式的人来所,嵌入式系统的内存是宝贵的,内存是否高效率的使用往往意味着嵌入式设备是否高质量和高性能,所以高效的使用内存对我们来说是很重要的。那么我们在自己编写C语言代码的时候就应该学会使用动态数组,这也就是我这篇博客要给大家讲的,我尽我所能的用一些简单的代码来讲解动态数组,希望我所讲的对你有所帮助。

    那么我们首先来看看什么是动态数组,动态数组是相对于静态数组而言,从“动”字我们也可以看出它的灵活性,静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。而动态数组则不然,它可以随程序需要而重新指定大小。动态数组的内存空间是从堆动态分配的。是通过执行代码而为其分配存储空间。当程序执行到我们编写的分配语句时,才为其分配。对于静态数组,其创建非常方便,使用完也无需释放,要引用也简单,但是创建后无法改变其大小是其致命弱点!对于动态数组,其创建麻烦,使用完必须由程序员自己释放,否则将会引起内存泄露。但其使用非常灵活,能根据程序需要动态分配大小。所以相对于静态数组的来说我们对于使用动态数组有很大的自由度。

    在创建动态数组的过程中我们要遵循一个原则,那就是在创建的时候从外层往里层,逐层创建;而释放的时候从里层往外层,逐层释放。这个话你读了可能理解并不深刻,不过不要急,接下来我们看看两段代码。

    一维动态数组的创建:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    int n1,i;
    int *array;
    printf("请输入所要创建的一维动态数组的长度:");
    scanf("%d",&n1);
    array=(int*)calloc(n1,sizeof(int));
    for(i=0;i<n1;i++)
    {
     printf("%d\t",array[i]);
    }
    printf("\n");
    for(i=0;i<n1;i++)
    {
     array[i]=i+1;
     printf("%d\t",array[i]);
    }
     free(array);//释放第一维指针 
    return 0;
    }

    运行结果为:

     

    二维数组的创建:

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int main(){
    	int num1,num2;
    	cout<<"请输入动态二维数组的第一个维度:";
    	cin>>num1;
    	cout<<"请输入动态二维数组的第二个维度:";
    	cin>>num2;
    	int **array = (int **)calloc(num1,sizeof(int));
    	for(int i=0;i<num1;i++) {
    		array[i] = (int*)calloc(num2,sizeof(int));
    	}
    	for(int i=0;i<num1;i++){
    		for(int j=0;j<num2;j++){
    			array[i][j] =i*num2+j+1;
    			printf("%d\t",array[i][j]);
    		}
    		cout<<endl;
    	}
    	for(int i=0;i<num1;i++)	free(array[i]);
    	free(array);
    	return 0;
    }

    运行结果为:

     请输入所要创建的动态数组的第一维长度:3
    请输入所要创建的动态数组的第二维长度:3
    1       2       3
    4       5       6
    7       8       9
    Press any key to continue

    有了上面的代码我们再来说动态数组的建立就简单了,以二维为例,先说创建,还记得我们上面说的创建的原则嘛:从外层往里层,逐层创建。

    array=(int**)malloc(n1*sizeof(int*)); //第一维

    以上是我们创建二维动态数组的最外层,创建好了最外层那么我们接下来就是要创建次外层了。这里使用了二级指针。

    array[i]=(int*)malloc(n2* sizeof(int));//第二维

    在创建次外层的过程中我们使用了一个for语句,千万别忘了使用for循环语句,这是绝大多数人的一个易错点。

    创建好了接下来我们该讲到释放了,而释放的时候从里层往外层,逐层释放。刚刚与我们上面的创建相反,在以上代码中我们首先使用了下面一个for循环来释放里层。

    for(i=0;i<n1;i++) 

    free(array[i]);//释放第二维指针 
    }

    在通过以下语句来释放外层。
    free(array);//释放第一维指针

    如果出现多维的情况怎么做呢,我们接下来再来看看一个三维动态数组的创建和释放,以加深下读者的印象。代码如下:

    #include <stdlib.h> 
    #include <stdio.h> 
    int main() 
    { 
    int n1,n2,n3; 
    int ***array; 
    int i,j,k; 
    printf("请输入所要创建的动态数组的第一维长度:");
    scanf("%d",&n1); 
    printf("请输入所要创建的动态数组的第二维长度:");
    scanf("%d",&n2); 
    printf("请输入所要创建的动态数组的第三维长度:");
    scanf("%d",&n3); 
    array=(int***)malloc(n1*sizeof(int**));//第一维 
    for(i=0; i<n1; i++) 
    { 
    array[i]=(int**)malloc(n2*sizeof(int*)); //第二维 
    for(j=0;j<n2;j++) 
    { 
    array[i][j]=(int*)malloc(n3*sizeof(int)); //第三维 
    } 
    } 
    for(i=0;i<n1;i++)
    {
    for(j=0;j<n2;j++)
    {
    for(k=0;k<n3;k++) 
    { 
    array[i][j][k]=i+j+k+1; 
    printf("%d\t",array[i][j][k]); 
    } 
    printf("\n");
    }
    printf("\n");
    }
    for(i=0;i<n1;i++) 
    { 
    for(j=0;j<n2;j++) 
    { 
    free(array[i][j]);//释放第三维指针 
    } 
    } 
    for(i=0;i<n1;i++) 
    { 
    free(array[i]);//释放第二维指针 
    } 
    free(array);//释放第一维指针 
    return 0; 
    }

    运行结果为:

    请输入所要创建的动态数组的第一维长度:3
    请输入所要创建的动态数组的第二维长度:3
    请输入所要创建的动态数组的第三维长度:3
    1       2       3
    2       3       4
    3       4       5

    2       3       4
    3       4       5
    4       5       6

    3       4       5
    4       5       6
    5       6       7

    Press any key to continue

    看了以上三维动态数组的创建和释放代码以后,我想读者这个时候已经可以自己编写任意维的动态数组了。但是细心的读者可能发现了一个问题,那就是我们所讲的动态数组都是一次性创建好的,如果接下来在使用的过程中我们使用的数组需要扩展或者删减一些不再使用元素该怎么办呢?!接下来我们先看一段关于动态数组扩展的代码,在此以一维动态数组的扩展为例,其它的以此类推。

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    int*n,*p;
    int i,n1,n2;
    printf("请输入所要创建的动态数组的长度:");
    scanf("%d",&n1); 
    n=(int*)calloc(n1,sizeof(int));
    printf("请输入所要扩展的动态数组的长度:");
    scanf("%d",&n2); 
    p=(int*)realloc(n,(n2)*sizeof(int));//动态扩充数组
    for(i=0;i<n2;i++)
    {
    p[i]=i+1;
    if(i%5==0)
    printf("\n");
    printf("%d\t",p[i]);
    }
    free(p);
    return 0;
    }

    运行结果如下:

    请输入所要创建的动态数组的长度:6
    请输入所要扩展的动态数组的长度:25

    1       2       3       4       5
    6       7       8       9       10
    11      12      13      14      15
    16      17      18      19      20
    21      22      23      24      25      Press any key to continue

     

    接下来如何缩小动态数组。

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    int*n,*p;
    int i,n1,n2;
    printf("请输入所要创建的动态数组的长度:");
    scanf("%d",&n1); 
    n=(int*)calloc(n1,sizeof(int));
    for(i=0;i<n1;i++)
    {
    n[i]=i+1;
    if(i%5==0)
    printf("\n");
    printf("%d\t",n[i]);
    }
    printf("\n请输入所要缩小的动态数组的长度:");
    scanf("%d",&n2); 
    p=(int*)realloc(n,(n2)*sizeof(int));
    for(i=0;i<n2;i++)
    {
    if(i%5==0)
    printf("\n");
    printf("%d\t",p[i]);
    }
    printf("\n");
    free(p);
    return 0;
    }

    运行结果为:

    请输入所要创建的动态数组的长度:25

    1       2       3       4       5
    6       7       8       9       10
    11      12      13      14      15
    16      17      18      19      20
    21      22      23      24      25
    请输入所要缩小的动态数组的长度:15

    1       2       3       4       5
    6       7       8       9       10
    11      12      13      14      15
    Press any key to continue

    在这里值得注意的一点就是在缩减动态数组的时候,它是删除了后面的元素,而前面的元素保持不变。在使用realloc()函数的时候要由其注意它的使用规则。

     

    讲到这儿就到了该说结束的时候了,由于本人水平有限,博客中的不妥或错误之处在所难免,殷切希望读者批评指正。同时也欢迎读者共同探讨相关的内容,如果乐意交流的话请留下你宝贵的意见。

    展开全文
  • C语言动态分配数组

    2019-07-30 15:30:34
    最近在研究C语言相关的东西,遇到了一些问题,主要是关于数组内存分配的问题。我们最常用的数组分配方式就是使用 int array[] ={1,2,3,4}来分配固定长度的数组,...printf(“请输入数组的长度:”); scanf("%d",&am...

    最近在研究C语言相关的东西,遇到了一些问题,主要是关于数组内存分配的问题。我们最常用的数组分配方式就是使用 int array[] ={1,2,3,4}来分配固定长度的数组,但是当需要动态分配数组长度的时候怎么办呢?最近在使用的时候就遇到了,然后自己搜了搜相关的使用方法。
    1.先介绍基本数据类型的创建方法
    int array;
    printf(“请输入数组的长度:”);
    scanf("%d",&n);
    array=(int
    )calloc(n,sizeof(int));//calloc()表示分配n*sizeof(int)长度的内存
    2.结构体的创建方法
    typedef struct str
    {
    int a;
    char b;
    }str;
    int array;
    printf(“请输入数组的长度:”);
    scanf("%d",&n);
    array=(int
    )calloc(n,sizeof(str));//这里直接使用sizeof(str)就行了。

    展开全文
  • javascript中怎么输入数组例如建立一个空数组,var a=[] 然后怎么由用户在网页上往数组中输入值呢?javascript怎么定义数组使用javascript让用户输入5个数,保存到数组中,再使用javascript让用户输入5个数,保存到...

    javascript中怎么输入数组

    例如建立一个空数组,var a=[] 然后怎么由用户在网页上往数组中输入值呢?

    javascript怎么定义数组

    2bedc853ff8fa04ac268c0bf42a06ea6.png

    使用javascript让用户输入5个数,保存到数组中,再使用javascript让用户输入5个数,保存到数组中,再计算它们的平均值。用var str = prompt("输入","请输入5个数字,用','分隔。"), arr = str.split(","), i = 0, len = arr.length,sum=0; for(;i

    javascript里数组[1,[2,3],[4,5,6]]怎么输出一维数组

    javascript console.log 一个包含数组元素的对象时var v = { 'points':[{'x':1},{'x':5}] }; function unitTest() { conso主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是: 他能看到结构话的东西,如果是alert,淡出一个对象就是[object object],但是console能看到对象的内容. console不会打断你页面的操作,如果用alert弹出来内

    Javascript如何输出一个数组里面的所有元素?

    Javascript如何输出一个数组里面的所有元素?遍历所有元素然后输出?

    //var a = [];for(var i = 0 ; i < a.length ; i ++) { document.body.innerHTML += a[i];}

    html javascript用一个文本框读取用户输入的数组

    简单的说就是制作一个网页,, 用户输入若干数字、 然后用javascript来 冒泡排序 var bubbleSort = function (array) {//从后向前 if(。(array instanceof Array)) { return; } var n = array.length; for(var i = 0; i < n-1; i++) { for(var j = n-1; j > i; j) { var a = array[j], b = array[j-1]; if(a < b) {

    我在js中建立了数组,如何输出到页面上

    比如我定义的数组是aa 然后在页面中的要输出位置加入

    var sr=['a','b','c']; for (var i=0 ;i < sr.length ; i++){ //怎么写?最简单的方法,就是循环一个数组,然后分别给数组的每一个元素赋值。然后再将数组输出就可以了。下面是代码,仅供参考: var arr = new Array(10); for(var i = 0;i

    展开全文
  • 临时输入数组的大小 int n; scanf("%d",&n);//企图在程序中临时输入数组大小 int a[n]; 上述是反例,见谭浩强《C程序设计(第五版)》P140 正确示范 int n; scanf("%d",&n); int* a=(int*) calloc(n,size);...
  • 产生动态数组,编写程序,输入数组大小后,通过动态分配内存函数malloc产生数组。 给数组元素赋值,数组元素的值是其下标的10倍。 **输入格式要求:"%d" 提示信息:“Enter array size:” **输出格式要求:“array[%...
  • 动态创建数组

    2019-12-09 15:16:02
    动态创建不大于50字节的一维数组(大小由用户输入,范围为2 <= n <=50),并输入最大可能的字符串。编程实现删除字符串中ASCII码最大的字符,并输出删除后的字符串。请仔细看输入输出示例,示例中的“[空格]”...
  • c语言动态结构体数组

    2021-01-05 22:04:26
    学生信息管理系统中可以用到结构体数组进行数据的输入输出 typedef struct student//定义结构体 { char stu_number[20]; char stu_name[20]; float usual_mark; float exam_mark; float overall_mark; }Student...
  • 手把手入门C语言—动态创建数组

    千次阅读 2020-03-30 16:49:59
    手把手入门C语言—动态创建数组首先实现用户输入输出数组使用 realloc 函数扩展数组长度 首先实现用户输入输出数组 #include <stdio.h> #include <stdlib.h> /** 动态创建数组 动态数组的创建 1...
  • int n = 0;//存储长度 int max = 0;//存储最大值 //输入一个数组长度 printf("请输入一个数组长度:");... //动态创建数组 int *p = malloc(n * 4);//分配字节数 printf("随机产生的数组为:"); for (int i = 0;
  • import java.io.*; import java.util.*; public class qiPa { public static void main(String args[]... System.out.println("请输入您要录入的数组元素(若想结束请输入“ExitThisProgram”):"); BufferedRea
  • c动态申请数组内存

    千次阅读 2018-03-22 16:50:02
    题目如下:用处输入一个二维数组的长度N,然后输入数组元素。要求输出数组,以及数组的每一行之和。一开始我是这样想的#include &lt;stdio.h&gt; int main() { int i, j; int m = 0; printf("enter...
  • C++中输入动态数组

    2021-03-17 16:29:53
    #include<stdio.h> #include<iostream> #include<vector> using namespace std; int main(){ int a; vector<int> v; while(cin>>a) { v.push_back(a); if(cin.getchar()=='\...&
  • 1 #include&lt;iostream&gt;  2  3 using namespace std;  4  5 int main(int argc, char** argv) ... 7 int i , n , temp=0;...请输入数组大小";  9 cin&gt;&gt;n;  10  11 dou...
  • C语言中动态设置数组长度并赋值

    千次阅读 2019-03-09 15:14:14
    C语言中动态设置数组长度并赋值 这是一个小例子, 代码如下: #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;stdlib.h&gt;...请输入数组长度:"...
  • 采用vector动态存储 #include&lt;iostream&gt; #include&lt;vector&gt; using namespace std; int main(){ vector&lt;int&gt; data; int n,cnt = 0; while(cin&gt;&gt;n){ ...
  • 动态输入二维数组

    千次阅读 2018-09-28 00:23:05
    //清除a动态数组的数和空间。 }else if(c == '\n'){ //回车就退出输入。 data.push_back(a); vector().swap(a); break; } } //输出效果 int row = data.size(); int col = data[0].size(); cout for(int i = 0;i ...
  • C++输入获取未知长度的行输入数组 与 输出控制
  • 一、一维数组 1.动态数组来实现 #include<iostream> #include<vector> using namespace std; int main() { //输入行数 int n;... //一维动态数组的申请 ... //输入数组的每个元素 f...
  • "输入数组个数" << endl; cin >> n; cout << "输入数组元素" << endl; //当输入n=4时有6个空间没用浪费了,输入11时数组长度又超出了 //所以这种定长数组不好用,所以出现.
  • int n = 0;  printf("输入数组长度:");  scanf("%d", &n);    int *temp = malloc(n * 4);  for (int i = 0; i  temp[i] = arc4random()%51;  printf("%d ", temp[i]);  }  
  • 输入存到动态数组中 先修知识 getline(cin,str)来读取整行输入(包括空格),需要先定义string 变量 cin>>name;使用cin作为输入时,输入遇到空白(空格)就停止插入 函数描述 输入格式是:1 2 3 ;4 5 6...
  • vector动态创建数组

    千次阅读 2015-03-24 15:12:04
    遇到了一个题目,需要输入很大的数组来装对应的数据,刚开始用的是二位数组,100001这个级别的,运行成功了,但是内存超出去了。没有意义,于是想到了优化,当然——目标也很明确,数组。于是想到了vectory这个东西...
  • 较早的编译器是不允许这样做的,所以一些书籍比如以Tc讲解的书本都说数组的下标不能是变量。在vc6.0下亦是如此。 不过在一些较新的编译器如dev c++已经支持了,如下代码不会报错 #include #include int main...
  • java 声明和动态创建数组

    万次阅读 2015-09-26 11:20:35
    昨天在写代码时候需要动态创建一组,...这样就创建了初值为零的有3个元素的数组,这里的3也可以动态指定它的值。 对于整形,来看看初始化的形式:int[] myIntArray = new int[3]; int[] myIntArray = {1,2,3}; int[] m
  • VC 仿MFC的动态模板数组实例,作者:黄建雄。本模块通过双向链表实现一个相对高效的的动态数组,函数名  :FTEB_Array_GetDestSegEntry  功能 :返回目标索引指向的段头节点的指针  输入 :pArray 一个链对象  ...
  • 如何实现动态输入一串数字到动态数组ArrayList中?不知道输入的数字的个数,即任意个元素输入存储到数组中,如何判断输入停止? 1、假设输入的数字间是用空格分隔的; 2、split() 函数通过指定分隔符对字符串进行...
  • 动态数组01.cpp

    2019-12-01 11:22:55
    利用C语言实现动态数组,能够实现建立动态数组在输入数组数字个数的情况下创建数组,运用指针动态申请空间

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 285,380
精华内容 114,152
关键字:

动态输入数组