www.fltk.net > C定义动态数组

C定义动态数组

intmain(void) { int*number,n,m,i; printf("thetotalnumbersis:"); scanf("%d",&n); printf("backm:"); scanf("%d",&m); number=(int*)malloc(n*sizeof(int)); printf("input%dintegers:",n); for(i=0;i<n;i++) { scanf("%d",&number[i]); } 扩展资料

你好,动态数组,即根据实时变化,可以扩大数组大小.而这个功能的实现需要用到指针和malloc和realloc函数.int *a = (int*)malloc(10*sizeof(int));那么 a就相当于一个有10个元素的数组.当数据量超过10个放不下的时候,利用a = (int*)realloc(a, 20*sizeof(int));//意思是把a的大小增加到20,而保持原来已有的数据不变.上面的函数要包含#include<stdlib.h>或#include<malloc.h>#include<alloc.h>这跟编译环境有关

int size=5; //数组大小 自己可以随便定义 或是让用户输入char *p=new char[size]; //或是int 等其他类型类似之后把p当数组用就好,比如p[0]就是数组的0号元素

对一位数组,不知道数组大小可以这样做:int *a; int i,n; scanf("%d",&n); a=(int *)malloc(n*sizeof(int)); 这样就相当于C++的定义:int n; int a[n]; cin>>n; 对2位数组操作如下:int **a; int i,m,n; scanf("%d %d",&m,&n);*a=(int **)malloc(m*sizepf(int *)); for (i=0;i<m;i++) a[i]=(int *)malloc(n*sizeof(int)); 这样就相当于C++的定义:int m,n; int a[m][n]; cin>>m>>n;

void * malloc(字节数) 你用的时候把void 型的指针强制转换为你需要的类型的指针就行了 int *array =(int*)malloc(字节数);

在c语言中,数组的定义都是固定长度的,长度不允许变化.可以通过链表的方式来达到定义”动态数组“的等价功能,举例如下:链表节点定义如下:struct node { int data; // 数据域 struct node *next; // 指针域 };存放数据时可以对节点中的node赋值即可,如:struct node *p; // 定义一个链表节点 p->data = 3; // 存放第一个数据 p = p->next; p->data = 5; // 存放第二个数据这样,需要存放多少个数据就可以动态定义了,相当于实现了动态数组的功能.

定义指针然后再指针上,用malloc 分配内存. 比如定义整型 10个元素的动态数组int *p = (int*)malloc(sizeof(int)*10);这样就可以了.

long *buffer; // 定义一个动态数组malloc. // 动态分配 1000 单元realloc. // 再添加 分配 1000 单元 free( buffer ); // 取消 单元=============================================#include <stdio.h>#include <malloc.h>#include <stdlib.h>

int b = 5; //数组长度为5 int* a=new int[b]; for (int i = 0; i < b; i++) //为数组赋值 { a[i] = i; }

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com