c语言 定义数组时 大小必须是常量吗
请问我怎样用这个值来定义数组的大小 展开
1、首先双击启动visual studio 2015,单击“文件”-“新建”-“项目”,选择visual c++,然后是“空项目”。
2、定义了2个一维数组,一个名为arry1的整形数组,有1个元素;arry2为实型数组,有100个元素,注意数组下标是从0开始的,不是从1开始,比如arry1的第一个数组为arry[0]不是arry[1]。
3、对数组赋值或者部分赋值,第一个表示x[0]=1,x[1]=2,x[2]=3,x[3]=4,x[4]=5;第二个表示对前三个元素赋值,后面的元素都为0,x[0]=1,x[1]=2,x[2]=3,x[3]=0,x[4]=0。
4、一般形式:数组名[下标1][下标2],下标也是从0开始表示是第一个元素。
5、最后对二维数组赋值:int x[2][2] = { {1,2},{3,4} }表示x[0][0]=1,x[0][1]=2,x[1][0]=3,x[1][1]=4,x[0][0]表示第一行第一列,其他依次类推即可。
推荐于2018-02-27
一个咬定是"唯一的办法",一个还吹捧的劲儿劲儿的
动态数组的malloc和realloc都不知道吧。
这么做就可以了:
既然是记录条数,那么一定是一个整数,用动态数组就可以实现。
#include <malloc.h>
void main()
{
int *p; //动态数组的声明
p = (int * ) malloc (10);//这里的10就是动态申请的size,也就是数组的成员个数
p[0]=1;//后面就和正常的数组使用一样
p[1]=p[0]+2;
.........................
//换一个数据库 大小就变化了
p = (int * ) realloc (p,20); //假设变成了20,再通过realloc来重新定义数组大小
…………………………
free(p);//当内存不再使用时,应使用free()函数将内存块释放
}
C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式。
而C99做了很大改进,允许数组的[ ]中的值是整形变量或是整形表达式。如:
int n;
scanf ("%d", &n);
int array[n];
虽然n确实是需要运行时动态确定的变量,但是在C99中,以这种变量作为数组大小的形式已经是允许的了。这样的数组就被称之为“变长数组”。
注意:变长数组是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。
可以这样:
#include<stdio.h>
#include<stdlib.h>num是变量.
int *a=(int *)malloc(num*sizeof(int));
改变大小:
a=realloc(a,num2*sizeof(int));
用完后
free(a);