C如何定义数组(C如何定义数组变量)

本文讲讲C语言如何定义数组,C语言如何定义数组变量对应的知识点。希望对你有帮助,也别忘了收藏这个站点。

这篇文章的列表: 1.C语言如何定义数组? 2.C语言中数组定义的几种方法 3.C语言数组的定义和引用 4.C如何定义数组? 5、C语言数组定义 如何在C语言中定义数组 C语言中使用的数组必须先定义。一维数组被定义为:

类型指定符

数组名

C语言数组的定义和引用 C语言数组的定义和引用1

1.1一维数组的定义、初始化和引用

1.一维数组被定义为:

类型描述符数组名称[常量表达式]

(1)数组名的命名方法与变量名相同,遵循标识符的命名规则;

(2)数组是用方括号括起来的常量表达式,不允许有括号;

(3)常量表达式表示数组中元素的个数,即数组的长度。数组的下标从0开始,下标的最大值为:常量表达式-1;

(4)常量表达式可以包含常量和符号常量,但不能包含变量。

可以使用赋值语句或输入语句使数组中的元素获得值,但是这样会占用运行时间。可以在运行前初始化数组,即在编译阶段获取初始值。

2.阵列的初始化可以通过以下方法实现:

(1)在定义数组时,为数组元素分配初始值。比如:

static int a[10]={0,1,2,3,4,5,6,7,8,9 };

经过上面的定义和初始化,a[0]=0,a[1]=1,…,a[9]=9。

(2)在初始化期间,初始值只能分配给某些元素。例如:

静态int a[10]={0,1,2,3,4 };

定义的数组有10个元素,但只有前5个元素被赋予初始值,后5个元素的初始值为0。

(3)如果要使一个数组的所有元素值为零,可以使用以下方法:

static int a[10]={0,0,0,0,0,0,0,0,0 };

不能使用:

静态int a[10]= { 0 * 10 };

如果没有给静态数组赋值初始值,系统会自动给所有定义的数组元素赋值0。

(4)当将初始值分配给所有数组元素时,可以不指定数组长度。

3.一维数组的引用方法是:

c语言规定不能一次性引用整个数组,只能逐个引用。数组元素的表达式是:

数组名[下标]

下标可以是整数常量,也可以是整数表达式。比如:

a[0]= a[5]a[7]-a[2 * 3];

1.2二维数组的定义、初始化和引用

1.二维数组定义的一般形式是

类型描述符数组名称[常量表达式][常量表达式]

c语言采用上述定义方法,我们可以把二维数组看成一个特殊的一维数组:它的元素也是一维数组。在C语言中,二维数组中元素的排列顺序是:先按行存储,再按列存储,即先存储第一行的元素,再在内存中存储第二行的元素。

2.2D数组的初始化:2D数组可以通过以下方法初始化:

(1)用线给二维数组赋初值。比如:

static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12 } };

上面的赋值是把第一个花括号里的数据赋给第一行元素,第二个花括号里的数据赋给第二个元素…,也就是按行赋值。

(2)可以把所有的数据写在一个花括号里,按照数组排列的顺序给每个元素赋值。

(3)可以给数组的一些元素赋初始值。比如:

static int a[3][4]={{1},{5},{ 9 } };

上面赋值的结果是数组第一列的元素分别被赋值初始值1,5,9,其他元素的值都是0。

(4)如果一个二维数组的所有元素都被赋予了初始值,那么在定义数组时可以省略第一维的长度,但是不能保存第二维的长度。

3.二维数组的引用:二维数组的元素可以表示为:

数组[下标][下标]

当引用二维数组时,它必须是单个元素,而不是整个数组名称。下标可以是表达式,但不能是变量。如果下标是表达式,请注意表达式的值不能超过数组定义的上限和下限。

C语言数组的定义与引用2

指针数组描述的一般形式是:

类型描述符*数组名[数组长度]

其中类型描述符是指针值所指向的变量的类型。例如:

int *pa[3]

表示pa是一个指针数组,有三个数组元素,每个元素值都是一个指向整型变量的指针。

【例10-33】指针数组通常可以用来指向二维数组。指针数组中的每个元素都被赋予二维数组每行的第一个地址,所以也可以理解为指向一维数组。

main(){

int a[3][3]={1,2,3,4,5,6,7,8,9 };

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

int * p = a[0];

int I;

for(I = 0;i3;我)

printf("%d,%d,%d ",a[i][2-i],*a[i],*(*(a I)I));

for(I = 0;i3;我)

printf("%d,%d,%d ",*pa[i],p[i],*(p I));

}

在这个程序中,pa是一个指针数组,三个元素分别指向二维数组A的行。然后用循环语句输出指定的数组元素。其中*a[i]表示第I行第0列的元素值;*(*(a i) i)表示第I行第I列的元素值;*pa[i]表示第I行第0列的元素值;由于P与a[0]相同,p[i]代表0行I列的值;*(p i)表示第0行第I列的值。读者可以仔细理解元素值的各种表示。

我们要注意指针数组和二维数组指针变量的区别。虽然两者都可以用来表示二维数组,但是表示方法和意义是不同的。

二维数组指针变量是单个变量,一般形式的“(*指针变量名称)”前后的括号是不可缺少的。指针数组类型表示多个指针(一组有序指针)。在一般形式中,*指针数组名周围不能有括号。例如:

int(* p)[3];

表示指向二维数组的指针变量。二维数组的列数是3,或者一维数组的长度是3。

int *p[3]

意味着P是一个指针数组,有三个下标变量p[0],p[1],p[2]都是指针变量。

当指针数组的每个元素都被赋予一个字符串的第一个地址时,指针数组也经常被用来表示一组字符串。指向字符串的指针数组的初始化更简单。例如,在例10.32中,一个指针数组被用来表示一组字符串。它的初始化任务是:

char *name[]={ "非法日",

“星期一”,

“星期二”,

“星期三”,

“星期四”,

“星期五”,

“星期六”,

《星期日》

};

完成这个初始化赋值后,name[0]指向字符串“非法日”,name[1]指向“星期一”。

指针数组也可以用作函数参数。

[例10-34]指针数组用作指针函数的参数。在本例的main函数中,定义了一个指针数组名,并对该名称进行了初始化和赋值。它的每个元素都指向一个字符串。然后调用指针函数day_name,以name作为实参,数组名赋给参数变量名,输入整数I赋给参数n作为第二个实参。在day_ name函数中定义了两个指针变量pp1和pp2,其中pp1被赋予name[0]的值(即*name),pp2被赋予name[n]的值(即*(name n))。根据条件表达式,指针pp1或pp2返回到主函数中的指针变量ps。最后输出I和ps的值。

main(){

静态char *name[]={ "非法日",

“星期一”,

“星期二”,

“星期三”,

“星期四”,

“星期五”,

“星期六”,

《星期日》

};

char * ps

int I;

char *day_name(char *name[],int n);

printf("输入日期号:");

scanf("%d ",I);

if(i0)退出(1);

ps=day_name(name,I);

printf("天号:- %s ",I,PS);

}

char *day_name(char *name[],int n){

char *pp1,* pp2

pp1 = * name

pp2=*(名字n);

return((n1||n7)?pp1:pp2);

}

[例10-35]输入五个国家名,按字母顺序输出。现在编程如下:

#包含" string.h "

main(){

void sort(char *name[],int n);

void print(char *name[],int n);

static char *name[]={ "中国"、"美国"、"澳大利亚"、"法国"、"德国" };

int n = 5;

sort(name,n);

打印(姓名,n);

}

void sort(char *name[],int n){

char * pt

int i,j,k;

for(I = 0;in-1;i ){

k = I;

for(j = I ^ 1;jn;j)

if(strcmp(name[k],name[j])0)k = j;

如果(k!=i){

pt = name[I];

name[I]= name[k];

name[k]= pt;

}

}

}

void print(char *name[],int n){

int I;

for(I = 0;在;i ) printf("%s ",name[I]);

}

描述:

1)在前面的例子中,采用了常见的排序方法,比较后交换字符串的位置。交换字符串的物理位置是通过字符串复制功能完成的。重复交换会减慢程序的执行速度,同时由于每个字符串(国家名称)的长度不同,会增加存储管理的负担。指针数组可以很好地解决这些问题。所有的字符串都存储在一个数组中,这些字符数组的第一个地址放在一个指针数组中。当需要交换两个字符串时,只需要交换指针数组对应的两个元素的内容(地址),而不是字符串本身。

2)这个程序定义了两个函数,一个叫sort完成排序,它的形参是指针数组名,是每个要排序的字符串数组的指针。参数n是字符串的数量。另一个函数名为print,用于输出排序后的字符串,其形参与sort相同。在main函数中,定义并初始化了指针数组名。然后分别调用排序函数和打印函数,完成排序和输出。值得注意的是,在sort函数中,strcmp函数用于比较两个字符串,strcmp函数允许参与比较的字符串以指针的形式出现。Name[k]和name[j]都是指针,所以是合法的。当字符串比较后需要交换时,只交换指针数组元素的值,而不交换具体的字符串,这样会大大减少时间开销,提高运行效率。

C语言数组的定义和引用3

示例:使用以下代码输出一个4×4整数矩阵:

# include # include int main(){ int a1 = 20,a2=345,a3=700,a4 = 22int b1=56720,b2=9999,b3=20098,B4 = 2;int c1=233,c2=205,c3=1,c4 = 6666int d1=34,d2=0,d3=23,d4 = 23006783printf("%-9d %-9d %-9d ",a1,a2,a3,a4);printf("%-9d %-9d %-9d ",b1,b2,b3,B4);printf("%-9d %-9d %-9d ",c1,c2,c3,C4);printf("%-9d %-9d %-9d ",d1,d2,d3,D4);系统(“暂停”);返回0;}

运行结果:

20 345 700 22

56720 9999 20098 2

233 205 1 6666

34 0 23 23006783

矩阵中有16个整数,我们为每个整数定义一个变量,也就是16个变量。那么,为了减少变量的数量,让开发更有效率,可以为多个数据定义一个变量吗?比如把每行的整数放在一个变量里,或者把16个整数都放在一个变量里。

我们知道,如果要把数据放入内存,首先要分配内存空间。如果放入四个整数,就要分配四个int类型的内存空间:

int a[4];

这样,在内存中分配了4个int类型的内存空间,总共4×4=16字节,并给它们起了一个名字,叫做A..

我们把这样一组数据称为数组,它包含的每一个数据称为一个元素,它包含的数据个数称为数组的长度,例如int a[4];定义了一个长度为4的整数数组,它的名字是a。

数组中的每个元素都有一个序列号,从0开始,而不是我们熟悉的1,称为索引。当使用数组元素时,只需指明下标,形式为:

array name[索引]

ArrayName是数组名,index是下标。例如,a[0]表示第0个元素,a[3]表示第3个元素。

接下来,我们将把第一行中的四个整数放入数组:

a[0]= 20;

a[1]= 345;

a[2]= 700;

a[3]= 22;

这里,0、1、2和3是数组下标,a[0]、a[1]、a[2]和a[3]是数组元素。

让我们总结一下数组是如何定义的:

数据类型array name[length];

DataType是数据类型,arrayName是数组名,length是数组长度。例如:

浮动m[12];

char ch[9];

应该指出的是:

1)数组中每个元素的数据类型必须相同,对于int a[4];,每个元素必须是int。

2)数组长度最好是整数或常数表达式,如10、20*4等。,以便它可以在所有编译器下运行;如果长度包含变量,比如n,4*m等。,会在一些编译器中报错,这一点我们会在C语言变长数组一节讨论。

3)访问数组元素时,下标的取值范围为0 ≤索引长度。过大或过小都会越界,导致数组溢出,出现不可预知的情况。我们将重点放在“C语言数组的静态、过交叉和溢出”一节的讨论,敬请关注。

4)数组是一个整体,它的内存是连续的,下面是int a[4];内存图:

数组初始化

上面的代码首先定义数组,然后给它赋值。我们也可以在定义数组时赋值:

int a[4] = {20,345,700,22 };

{}中的值是每个元素的初始值,值之间使用区间。

为数组分配初始值时,请注意以下几点:

1)您只能为某些元素分配初始值。当{}中的值的数量小于元素的数量时,只有前面的元素被赋值。例如:

int a[10]={12,19,22,993,344 };

意味着只有5个元素A [0] ~ A [4]被赋值,后面5个元素自动赋值为0。

当赋值的元素小于数组总元素数时,剩余元素自动初始化为0:对于short、int、long,为整数0;对于char,它是字符“”;对于浮点数和双精度数,它是十进制0.0。

我们可以用以下形式将数组的所有元素初始化为0:

int a[10]= { 0 };

char c[10]= { 0 };

float f[10]= { 0 };

由于剩余的元素被自动初始化为0,所以只需要将值0赋给第0个元素。

示例:输出数组元素。

#include int main(){ int a[6] = {299,34,92,100 };int b[6],I;//从控制台输入数据,并为每个元素赋值(I = 0;i6;i ){ scanf("%d ",b[I]);}//输出数组元素for(I = 0;i6;i ){ printf("%d ",a[I]);}放' ');for(I = 0;i6;i ){ printf("%d ",b[I]);}放' ');返回0;}

运行结果:

90 100 33 22 568 10

299 34 92 100 0 0

90 100 33 22 568 10

2)只能给元素逐个赋值,不能给整个数组赋值。例如,将值1赋给所有十个元素只能写成:

int a[10]={1,1,1,1,1,1,1,1,1,1,1,1 };

它不能写成:

int a[10]= 1;

3)如果所有元素都被赋值,那么在定义数组时可以省略数组的长度。例如:

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

等于

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

最后,我们使用该数组输出一个4×4的矩阵:

# include # include int main(){ int a[4]= { 20,345,700,22 };int b[4] = {56720,9999,20098,2 };int c[4]= { 233205,16666 };int d[4] = {34,0,23,23006783 };printf("%-9d %-9d %-9d ",a[0],a[1],a[2],a[3]);printf("%-9d %-9d %-9d ",b[0],b[1],b[2],b[3]);printf("%-9d %-9d %-9d ",c[0],c[1],c[2],c[3]);printf("%-9d %-9d %-9d ",d[0],d[1],d[2],d[3]);系统(“暂停”);返回0;}

如何在C语言中定义数组 首先,双击启动visual studio 2015。如果你用的是其他版本的vs,还是可以的。单击文件-新建-项目,选择visual c,“清空项目”。

12如何下载visual studio2015及安装教程

请点击输入图片说明。

单击解决方案资源管理器,右键单击源文件-添加-新项,选择C文件,最后单击添加。

请点击输入图片说明。

第一种方法:

一维数组:

int arry 1[10];

浮动数组2[100];

定义了两个一维数组,一个是名为arry1的整数数组,有一个元素;Array2是一个有100个元素的实数组。请注意,数组下标从0开始,而不是从1开始。比如array1的第一个数组是arry[0],而不是arry[1]。

请点击输入图片说明。

将值或部分值赋给数组:

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

int x[5] = { 1,2,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;

请点击输入图片说明。

二维数组:

一般形式:数组名[下标1][下标2],下标也从0开始表示是第一个元素。例如:

int x[1][2];定义了一个名为x的具有1行2列的二维整数数组。

请点击输入图片说明。

为二维数组赋值:

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]表示第一行和第一列,依此类推。

请点击输入图片说明。

数组定义模式c语言 声明数组的四种方法:

1.首先声明,然后初始化

例如:

//1 .声明

int[]nums;

//初始化

nums = new int[5];

2.声明并初始化

例如:

//2.声明并初始化

int[]nums = new int[10];

3.创建一个数组并同时赋值

例如:

//3.创建一个数组并同时赋值

String[] names=new String[]{“大明”、“小米”、“夏”};

int[] ages=new int[]{21,22,21,56,13 };

for(int I = 0;一.姓名.长度;i ){

system . out . prin rln(names[I]);

}

for(int I = 0;I年龄.长度;i ){

system . out . prin rln(ages[I]);

}

4.创建同时赋值,速记,并且不能写成两个语句。

例如:

//4.创建同时赋值,速记,并且不能写成两个语句。

String[] cities = { "上海","北京" };

扩展数据:

数组是元素的有序序列。如果一组相同类型的变量被命名为数组名。组成数组的变量称为数组的组成部分、数组的元素,有时也称为下标变量。用来区分数组元素的数字称为下标。数组是一种形式,其中相同类型的几个元素以有序的方式组织起来,以便于编程中的处理。这些同类数据元素的有序集合称为数组。

数组是用于存储同一类型的多个数据的集合。

在C语言中,数组属于结构化数据类型。一个数组可以分解成多个数组元素,可以是基本数据类型,也可以是结构类型。因此,根据数组元素类型的不同,数组可以分为数值数组、字符数组、指针数组、结构数组等类别。

C语言中如何定义数组,如何定义数组变量的介绍到此结束。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。

相关文章

发表新评论