当前位置:首页 » 编程语言 » c语言如何定义未知个数数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言如何定义未知个数数组

发布时间: 2023-01-03 05:13:34

c语言如何定义未知个数的数组

用malloc函数。。。。
比如你要申请int型的未知个数数组。可以以下程序
#include<stdio.h>
#include<stdlib.h>

main()
{
int *p;
int n;
printf("请输入录入个数N:\n");
scanf("%d",&n);
p = (int *)malloc(n*sizeof(int));
//然后把*p当作数组指针用就可以了。。~~~~
}

㈡ C语言 数组未知个数 怎么声明

1、首先,我们编写头文件以及main函数主框架。

㈢ 怎样用c语言生成一个数组都是未知数

@现在我遇到这样一个问题,一个6*6的矩阵,里面每个数都是未知数,都需要通过另外的公式计算得到,那这个数组该怎么定义呢?是不是在定义这个数组之前都要把这些未知数都通过公式和scanf定义了?
回答:先根据36个数的类型(如int),定义int
a[6][6]={0},这个语句的意思是:36个元素都设为0.在后来的计算中,将开始的元素替换掉就可以了,如
a[5][5]
=
100;(将最后一个元素设为100)

㈣ c++ 如何定义未知元素个数的数组

如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:
int array[10];
或者
const int Size=10;
int array[Size];

当然你可以采用常量的方法,但是就是每次必须打开源代码来调整这个数组的大小,很不方便,所以要采用动态内存分配的方法;

在c语言中:
int arraysize;//元素个数
printf("请输入数组的大小:");
scanf("%d",&arraysize);

int *array;//用指针指向一个数组
array=(int *)malloc(arraysize *sizeof(int));//动态内存分配
....
free(array);//最后要释放这个空间,用完了,当然要还给系统

malloc()函数在内存堆区中寻找未被使用的内存,找够所需的字节数后返回该内存的起始地址。
所需字节数通过参数知道,在本例中arraysize元素个数,乘以每一个元素的字节数,等于总的字节数;
每一个元素的字节数通过测字节sizeof()运算符得到,元素的数据类型为int,所以测int类型需要多少字节。
malloc()函数并不知道用这些内存干什么,所以返回一个没有类型的指针,但对于整型指针array来说,malloc()函数得返回值必须显式转换成整型指针才能被接受。所以前面加了一个(int *)。

在c++中就可以不用malloc()函数和free()函数了。
int arraysize;//元素个数
cout<<"请输入数组的大小:";
cin>>arraysize;

int *array;//用指针指向一个数组
array=new int[arraysize]; //动态内存分配
....
delete []array;//最后要释放这个空间,是一组空间所以加了[]。

array=new int[arraysize];
new表示申请空间;什么类型?int;多大?arraysize
返回该内存的起始地址存到array指针中

㈤ C语音如果数组个数不确定应该怎样定义数组

第一种方法:最大值法。
申请的数组可能需要30个左右,于是申请数组大小固定为40;
第二种方法:动态分配,即指针。
需要大小为n的整型数组,int *pn = (int*)malloc(n*sizeof(int));

㈥ 刚学c语言,怎么定义一个未知元素个数的数组啊在线等~谢谢了

不用作任何改动,就定义a[]就可以了,C语言自动按逗号分隔,并提供相应的缓冲区.

㈦ 刚学c语言,怎么定义一个未知元素个数的数组

不能!
可以根据实际情况考虑,比如说如果不超过100个 ,那就定义105的数组

㈧ C语言中怎样定义一个未知行数和列数的二维数组

1、使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。
2、例程,分配3行4列二维数组:

#include<stdio.h>
#include<malloc.h>
intmain()
{
int**a;
inti,j;
a=(int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for(i=0;i<3;++i){//为每列分配4个大小空间
a[i]=(int*)malloc(sizeof(int)*4);
}
//初始化
for(i=0;i<3;++i){
for(j=0;j<4;++j){
a[i][j]=i+j;
}
}
//输出测试
for(i=0;i<3;++i){
for(j=0;j<4;++j){
printf("%d",a[i][j]);
}
printf(" ");
}
//释放动态开辟的空间
for(i=0;i<3;++i){
free(a[i]);
}
free(a);
return0;
}
/*
输出:
0123
1234
2345
*/

㈨ C语言中如何将未知个数的数存放在一个数组中

在C语言中数组的定义必须指明维数,即使没有指明维数,也必须进行初始化,编译器通过初始化列表中的元素个数来确定数组的维数,比如下面的代码:

int a[] = {1,2,3};

虽然没有指明数组的维数,但是编译知道数组a的维数是3(只有三个元素)。


要实现未知个数的元素存储于数组中,可以使用malloc()和free()来进行动态内存分配 。下面是一个使用动态内存的示例:


#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>

intmain()
{
intsize;
printf("输入建立元素的个数:");
scanf("%d",&size);
int*p=(int*)malloc(sizeof(int)*size);
if(p==0){
printf("不能分配内存 ");
return0;
}

//初始化内存
memset(p,0x00,sizeof(int)*size);
//释放内存
free(p);
return0;
}

㈩ C 如何定义一个未知长度的数组

定义一个未知长度的数组的方法:

一是用VLA可变长数组,例如:
int i = 10, j = 20;
double a[i][j]; //定义VLA
VLA要c99才开始支持,需要使用c99编译器,例如gcc

二是使用动态数组,例如:
int m = 10, n = 20;
.........
double **p = ( double** )malloc( 10 * sizeof( double* ) );
for( i = 0; i < 20; ++i )
p[i] = ( double* )malloc( 20 * sizeof( double ) );
..........
p[5][6] = 20.68;