c语言如何定义数组

Python011

c语言如何定义数组,第1张

c语言定义数组的方法是:C语言中,同变量一样;数组也必须先定义后使用。一维数组的定义形式。

1、类型标识符,数组名[常量表达式];例如int a[10];其中a为地址常量。

2、如变量的定义一样,inta;double a;floata等;数组的定义只是把后面的变量名改为数组名而已。

3、int a[10]就是定义了一个数组名为a的数组;此数组有10个元素。其中各元素从a[0]到a[9];并没有a[10]元素。

两种方法:

转化为一维数组申请

先申请全部行首指针,再按行逐行申请

1、方法一:

a=(int *)malloc(sizeof(int),(unsigned)m*n)

使用的时候就和一般的二维数组一样。

举个例子给你:

#include "stdlib.h"

#include "stdio.h"

#include <malloc.h>

int main()

{

int i,j

int n//这个就是需要指定的行数

int (*p)[10]

scanf("%d",&n)//取得行数

//动态生成二维数组,指定列数为10,如果想改,自己该里面

的参数,如果想定义n行2列就为: p=(int (*)[2])malloc(n*2*sizeof(int))

p=(int (*)[10])malloc(n*10*sizeof(int)) //动态申请n行10列的二维数组

for(i=0i<ni++)

for(j=0j<10j++)

p[i][j]=i*j

for(i=0i<ni++)

{

for(j=0j<10j++)

printf("%d,",p[i][j])

printf("\n")

}

free(p)

return 0

}

2、方法二:

#include <stdio.h>

#include <malloc.h>

main()

{

int i = 0

int j = 0

int line = 0

int row = 0

int **p = NULL

printf("input the line of the array:\n")

scanf("%d", &line)

printf("input the row of the array:\n")

scanf("%d", &row)

p = (int **)malloc(sizeof(int *) * line)

if (NULL == p)

{

return

}

for (i = 0 i < line i++)

{

*(p + i) = (int *)malloc(sizeof(int) * row)

if (NULL == *(p + i))

{

return

}

}

/*input data*/

for (i = 0 i < line i++)

{

for(j = 0 j < row j++)

{

p[i][j] = i + 1

}

}

/*output data*/

for (i = 0 i < line i++)

{

for(j = 0 j < row j++)

{

printf("%d", p[i][j])

}

}

/*free every line point*/

for (i = 0 i < line i++)

{

free(*(p + i))

p[i] = NULL

}

free(p)

p = NULL

}

在C语言中使用数组必须先进行定义。一维数组的定义方式为:

类型说明符 数组名 [常量表达式]

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

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

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

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

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

是错误的。

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

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

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

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