c语言数组的定义

C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。

在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符; 数组名 ;[常量表达式]。

其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:

int a[10]; /* 说明整型数组a,有10个元素 */

float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */

char ch[20]; /* 说明字符数组ch,有20个元素 */

对于数组类型说明应注意以下几点:

1、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2、数组名的书写规则应符合标识符的书写规定。

3、数组名不能与其它变量名相同。例如:

int a;

float a[10];

是错误的。

4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。

5、不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:

#define FD 5

// ...

int a[3+2],b[7+FD];

是合法的。但是下述说明方式是错误的。

int n=5;

int a[n];

6、允许在同一个类型说明中,说明多个数组和多个变量。例如:

int a,b,c,d,k1[10],k2[20];

(1)小数组C语言扩展阅读:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

㈡ C语言 怎么将数组变小

不能那么作。

如果一定要这么做。
用这样:

int *a;

a=(int *)malloc(sizeof(int)*20); //定义a[20];
a=(int *)realloc(a,sizeof(int)*10);//把之前a的值带过来,并且分配新的数组大小。

㈢ C语言数组输入。。

#include<stdio.h>
void main()
{
int i,j,k,min,n,m,max;
int a[9];
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("你输入的十个数为:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
min=a[0];
max=a[0];
for(i=1;i<10;i++)
{

if(max<a[i])
{
max=a[i];
n=i;
}

}

for(i=1;i<10;i++)
{

if(min>a[i])
{
min=a[i];
m=i;
}

}

printf("\n最大数为%d ,下标为%d\n",max,n);
printf("\n最小数为%d ,下标为%d\n",min,m);
}

20个元素也版是一样的道理的。权

㈣ 初学者提问:c语言 数组太小

数组太多,数组太大,所以得运行错误。
“数组太小”在这里只表示有运行错误,不是真的说太小。
如果语句中用到的下标大于等于2000,(超过声明),当然也是“数组太小”错误。
数组较多,较大应当采用动态分配内存法,即声明为指针,要用时再分配内存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道数组大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下来可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函数
free
释放掉它的内存。
}
数组太多,数组太大,所以得运行错误。
“数组太小”在这里只表示有运行错误,不是真的说太小。
如果语句中用到的下标大于等于2000,(超过声明),当然也是“数组太小”错误。
数组较多,较大应当采用动态分配内存法,即声明为指针,要用时再分配内存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道数组大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下来可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函数
free
释放掉它的内存。
}
数组太多,数组太大,所以得运行错误。
“数组太小”在这里只表示有运行错误,不是真的说太小。
如果语句中用到的下标大于等于2000,(超过声明),当然也是“数组太小”错误。
数组较多,较大应当采用动态分配内存法,即声明为指针,要用时再分配内存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道数组大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下来可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函数
free
释放掉它的内存。
}
数组太多,数组太大,所以得运行错误。
“数组太小”在这里只表示有运行错误,不是真的说太小。
如果语句中用到的下标大于等于2000,(超过声明),当然也是“数组太小”错误。
数组较多,较大应当采用动态分配内存法,即声明为指针,要用时再分配内存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道数组大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下来可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函数
free
释放掉它的内存。
}

㈤ C语言中如何定义数组

数组定义的三种方式

1、第一种

int []a = newint[5];

a[0] = 10;

2、第二种

int []c = newint[]{1,2,3};

3、第三种

int []i ={1,2,3,4};

4、错误的写法

int []i1 = [1,2,3,4];

System.out.println(Arrays.toString(c));

5、总之,具体的元素内不能被【容】包裹。【】包裹的应该是数组的数量。

(5)小数组C语言扩展阅读

数组的注意事项:

1、 数组中每个元素的数据类型必须相同,对于inta[4];,每个元素都必须为 int。

2、 数组长度 length最好是整数或者常量表达式,

3、 访问数组元素时,下标的取值范围为 0 ≤ index < length,

参考资料

网络-数组



㈥ C语言数组

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<malloc.h>
voidsx(int*nums,intlen);//传参数组、长度功能:将数组按升序排列
voidpsl(int*nums,intlen);//打印
intmain()
{
intn,i,*nums;
printf("输入n的值(小于等于20):");
scanf("%d",&n);
nums=(int*)malloc(sizeof(int)*(n+1));
printf("生成随机%d个2位数:",n);
srand(time(NULL));
for(i=0;i<n;i++)
nums[i]=rand()%100;
sx(nums,n);
printf(" 升序排列后的数列为:");
psl(nums,n);

printf(" 输入要插入的数字:");
scanf("%d",&nums[n]);
sx(nums,n+1);
printf("插入后的升序数列为:");
psl(nums,n+1);
return0;
}
voidpsl(int*nums,intlen)
{
inti;
for(i=0;i<len;i++)
printf("%d",nums[i]);
}
voidsx(int*nums,intlen)//传参数组、长度功能:将数组按升序排列
{
intnSave,i,j;
for(i=0;i<len;i++)
{
for(j=i;j<len;j++)
{
if(nums[i]>nums[j])
{
nSave=nums[i];
nums[i]=nums[j];
nums[j]=nSave;
}
}
}
}

㈦ C语言数组小问题

后30个数组单元不是NULL。静态数组貌似不行,需要在释放时才行,建议用动态数组。
方法(1)按需要int a[0]=new int[20],int a[1]=new int[20],(分开成几部分new) 。然后把你不需要的delete掉。 delete a[1].
方法(2)一个折中的方法,算法是:先开辟一个很大的空间来存放输入的字符,然后统计字符长度,根据长度动态开辟空间,然后将输入的字符复制到动态开辟的空间。结束。虽然有字符长度受限,不过运行起来还行。

㈧ c语言中关于数组的一点小问题

这是因为c数组只有5个元素,但是你的循环有10次(for(i=0;i<10;i++) c[i]=c[i]/10;),后5次其实修改的是b数组的值,这是典型的数组越界问题,但是因为c数组和b数组地址是连续的,所以没报错但是修改了你不想修改的值,这种错很隐蔽!用数组要谨慎呀!

㈨ c语言数组

代码里所有的a[9]要改成a[8]。因为a[8]才是第9个元素。

㈩ C语言数组小编程

#include<stdio.h>
main()
{
int a[10];
int i,m,t,j=0;
printf("请输入10个整数\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
m=a[0];
for(i=0;i<10;i++)
{
if(a[i]<m)
{
m=a[i];
j=i;}
}
t=a[0];
a[0]=m;
a[j]=t;
for(i=0;i<10;i++)
printf("%d ",a[i]);
}