1)可以定义一个足够大的数组,保证够用就好。2)使用链表结构,用一个申请一个元素的空间 3)用malloc先申请一定的空间作为数组的空间,等到不够用的时候,再重新malloc一个更大的空间,将旧的那个空间里的数据拷贝过来,作为数组的新的空间,然后free掉旧的那个空间即可。
你这么写的话,那个n还是一个变量,c语言首先需要编译才能执行,而编译的时候编译器就认为这个n是不确定的,所以他不知道要给你分配多大的存储空间,我建议你可以定义一个指针来做,下面是一个例子。main(){vectorintn;intx;while(cinx)n.push_back(x);//建议你看一看关于vector的操作,访问vect...
在C语言中,可以使用指针来定义未知长度的数组。具体步骤如下: 声明一个指向未知长度数组的指针。例如,int *arr;。 在程序运行时,动态分配内存来存储数组元素。可以使用malloc()函数来实现。例如,arr = (int *)malloc(n * sizeof(int));,其中n为数组的长度。 使用指针操作符*来访问数组元素。例如,arr[0] =...
C语言中没有明确的“动态数组”(也就是不确定大小的数组)这个概念,只能用动态内存分配来实现,我给你一个思路:创建数组——用动态分配分配一个指定大小的内存(数组)销毁数组——释放动态分配内存 访问元素——通过内存指针间接引用 增加元素——再分配一块新内存区域(大小为增加后的大小),把久区...
动态内存分配不仅可以定义长度不确定的数组,还允许在程序运行期间调整数组大小。 一、使用realloc调整数组大小 我们可以使用realloc函数来改变之前分配的内存块的大小。其原型为void* realloc(void* ptr, size_t size)。这里ptr是指向先前分配的内存的指针,size是新的内存大小。下面是如何调整一个动态数组尺寸的例子: ...
请教问题,如何定义一..大佬们,请问一下c语言如何定义一个未知长度的数组,有个题目,我想定义一个未知长度的int数组,然后用sizeof计算其中元素个数,但是只要写int a[],就报错了,指定长度的话,int a[100]
在C语言中,只有在堆上才能申请动态数组。通过malloc可以申请用户自由输入长度的数组,通过realloc可以将已有的内存区域重新分配(扩充或缩减)。
free int main(){ int i, n;int* p; // 声明为指针 scanf( "%d", &n );p = ( int* )malloc( sizeof(int) * n ); // 以字节为单位分配 for ( i = 0; i < n; ++i ) { p[i] = i+1;printf( "%d ", p[i] );} free( p ); // 用完记得释放 return 0;} ...
定义一个未知长度的数组的方法:一是用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* ) )...
定义数组必须指定长度,一种是显示指定长度,如:int a[10];一种是根据元素的个数来确定长度,如int ...