首页

文章

C语言中的数组什么意思?

发布网友 发布时间:2022-04-20 01:47

我来回答

10个回答

热心网友 时间:2022-03-29 10:28

所谓数组,是有序的元素序列。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。

比如油烟机的风扇转速会和工作的模式之间有一定的关系,那么我们就可以把它的工作模式和一维数组的下标对应起来,我们将具体的转速放在数组中,这样的话就非常方便我们在日后查询。

再比如说家中的冷暖灯光控制这方面,色温灯里会有两个灯珠,分别对应的是冷光和暖光,选择不同的模式灯光的颜色就不同,我们就可以将这两种灯光的亮度pwm值事先放在二维数组中,以便调用调光。

在程序中合理地使用数组,会使程序的结构比较整齐,而且可以把较为复杂的运算,转化成简单的数组来表示。

扩展资料:

一、使用规则:

1、可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。

2、只能给元素逐个赋值,不能给数组整体赋值。

(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)

3、若不给可初始化的数组赋初值,则全部元素均为0值。

4、假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。

动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

二、表示方法:

数组元素是组成数组的基本单元。

数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。

如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。

参考资料:百度百科-数组

热心网友 时间:2022-03-29 11:46

把具有相同数据类型的若干变量按有序的形式组织起来,
以便于程序处理,这些数据元素的集合就是数组,按照数组
元素的类型不同,可分为:数值数组、字符数组、指针数组
结构数组等各种类别。
数组说明的一般形式为:
类型说明符 数组名[常量表达式],......;
其中类型说明符可以是任一种基本数据类型或构造数据类型
数组名是定义的数组标识符。常量表达式表示数据元素的个
数,也就是数组的长度。
对数组类型的说明应注意:
1)数组的类型实际上是数组元素的取值类型。
2)数组名的书写应符合标识符的书写规范。
3)数组名不能与其他变量名相同。
4)常量表达式表示数组元素的个数,但是其下标从0开始计算
5)不能在方括号中用变量来表示元素的个数,但是可以用符号
常数或常量表达式。
6)允许在同一个类型说明中,说明多个数组和多个变量。
数组元素的表示方法
一般比较简单就是数组名[下标]来引用,先定义后用,如果
是小数的话,直接自动取整。
数组赋值分为:初始化赋值和动态赋值
初始化赋值一般形式为:
static 类型说明符 数组名[常量表达式]={值,值......};
static表示静态存储类型,c语言规定只有静态存储数组和外部数组
才可做初始化赋值。
c语言对数组的初始化赋值还有几个规定:
1)可以只给部分元素赋值。
2)只能给元素逐个赋值,不能给数组整体赋值。
3)如不给可初始化的数组赋初值,在在数组说明中,可以不给出数组
元素的个数。
下面看一下*数组
主要看一下二维数组,其他的就可以用二维数组类推得到
二维数组的类型说明的一般形式是:
类型说明符 数组名[常量表达式1][常量表达式2]...;
在c语言中二维数组是按行排列的
二维数组的表示方法:
数组名[下标][下标]
二维数组的初始化
二维数组初始化也是在类型说明时给各下标变量赋以初值。 二维数组可
按行分段赋值,也可按行连续赋值。
二维数组的初始化还应该注意:
1)可以只对部分元素赋初值,未赋初值的元素自动取为0。
2)如对全部元素赋初值,则第一维的长度可以不给出。
字符数组:
用来存放字符变量的数组称为字符数组。
C语言允许用字符串的方式对数组作初始化赋值。例如:
static char c[]={'c', ' ','p','r','o','g','r','a','m'}; 可写为:
static char c[]={"C program"}; 或去掉{}写为:
sratic char c[]="C program";
用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结
束标志'\0'。上面的数组c在内存中的实际存放情况为: C program\0`\0'是
由C编译系统自动加上的。由于采用了`\0'标志,所以在用字符串赋初值时一
般无须指定数组的长度, 而由系统自行处理。在采用字符串方式后,字符数
组的输入输出将变得简单方便。 除了上述用字符串赋初值的办法外,还可用
printf函数和scanf函数一次性输出输入一个字符数组中的字符串, 而不必
使用循环语句逐个地输入输出每个字符。
void main()
{
static char c[]="BASIC\ndBASE";
printf("%s\n",c);
} printf("%s\n",c);
注意在本例的printf函数中,使用的格式字符串为"%s", 表示输出的是一
个字符串。而在输出表列中给出数组名则可。 不能写为: printf("%s",c[]);
void main()
{
char st[15];
printf("input string:\n");
scanf("%s",st);
printf("%s\n",st);
} char st[15];
本例中由于定义数组长度为15, 因此输入的字符串长度必须小于15,
以留出一个字节用于存放字符串结束标志`\0`。 应该说明的是,对一个字
符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,
当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串
的结束符。例如运行例4.8,当输入的字符串中含有空格时,运行情况为:
input string:this is a book this 从输出结果可以看出空格以后的字符
都未能输出。 为了避免这种情况, 可多设几个字符数组分段存放含空格的
串。程序可改写如下:
Lesson
void main()
{
char st1[6],st2[6],st3[6],st4[6];
printf("input string:\n");
scanf("%s%s%s%s",st1,st2,st3,st4);
printf("%s %s %s %s\n",st1,st2,st3,st4);
}
本程序分别设了四个数组, 输入的一行字符的空格分段分别装入四个数组。
然后分别输出这四个数组中的字符串。在前面介绍过,scanf的各输入项必须以
地址方式出现,如 &a,&b等。但在例4.8中却是以数组名方式出现的,这是为
什么呢?这是由于在C语言中规定,数组名就代表了该数组的首地址。 整个
数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10],在
内存可表示如图4.2。设数组c的首地址为2000,也就是说c[0]单元地址为2000。
则数组名c就代表这个首地址。因此在c前面不能再加地址运算符&。如写作
scanf("%s",&c);则是错误的。 在执行函数printf("%s",c) 时,按数组名c
找到首地址,然后逐个输出数组中各个字符直到遇到字符串终止标志'\0'为止。
字符串常用函数:
用于输入输出的字符串函数在使用前应包含头文件"stdio.h",使用其他字符串
函数则应包含头文件"string.h".下面介绍几个常用的字符串函数:
1)字符串输出函数 puts 格式:puts(字符数组名) 功能:把字符数组中的字符
串输出到显示器。
#include"stdio.h"
main()
{
static char c[]="BASIC\ndBASE";
puts(c);
}
2)字符串输入函数gets 格式:gets(字符数组名) 功能:从标准输入设备上
输入一个字符串。
#include"stdio.h"
main()
{
char st[15];
printf("input string:\n");
gets;
puts;
}
tips:gets函数并不以空格作为字符串输入结束的标志,而只是以回车作为输入
结束,这是与scanf不同的部分
3)字符串连接函数strcat 格式:strcat(字符数组名1,字符数组名2)
功能:把字符数组2中的字符串连接到字符数组1中字符串后面,并删去字符串
1后的串标志"\0",本函数返回字符数组1的首地址。
#include"string.h"
main()
{
static char st1[30]="My name is ";
int st2[10];
printf("input your name:\n");
gets(st2);
strcat(st1,st2);
puts(st1);
}
4)字符串拷贝函数strcpy 格式:strcpy(字符数组名1,字符数组名2)
功能:把字符数组2中的字符串拷贝到字符数组1中,串结束标志 "\0"也一同
拷贝,字符数组2也可以是一个字符常量,就相当于把一个字符串赋予一个字符数组
#include"string.h"
main()
{
static char st1[15],st2[]="C Language";
strcpy(st1,st2);
puts(st1);
printf("\n");
}
5)字符串比较函数strcmp格式:strcmp(字符数组1,字符数组2) 功能:
按照ASCII码顺序比较两个数组中的字符串,并有函数返回值返回比较结果
#include"string.h"
main()
{
int k;
static char st1[15],st2[]="C Language";
printf("input a string:\n");
gets(st1);
k=strcmp(st1,st2);
if(k==0) printf("st1=st2\n");
if(k>0) printf("st1>st2\n");
if(k<0) printf("st1<st2\n");
}
6)测字符串长度的函数strlen 格式:strlen(字符数组名) 功能:
测字符串的实际长度(不含字符串结束标志"\0")并作为函数返回值
#include"string.h"
main()
{
int k;
static char st[]="C Language";
k=strlen;
printf("The lenth of the string is %d\n",k);
}
程序举例:
例一:
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s<=i;s--) a[s+1]=a[s];<br>break;}
a[i]=n;
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
例二:
main()
{
static int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
int b[3],i,j,l;
for(i=0;i<=2;i++)
{
l=a[i][0];
for(j=1;j<=3;j++)
if(a[i][j]>l) l=a[i][j];
b[i]=l;
}
printf("\narray a:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\narray b:\n");
for(i=0;i<3;i++)
printf("%5d",b[i]);
printf("\n");
}
例三:
void main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
gets(cs[i]);
printf("\n");
for(i=0;i<5;i++)
{
p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{strcpy(st,cs[i]);<br>strcpy(cs[i],cs[p]);<br>strcpy(cs[p],st);<br>}
puts(cs[i]);
printf("\n");

热心网友 时间:2022-03-29 13:21

付费内容限时免费查看回答您好,我是百度问一问的合作老师吴工,很高兴为您服务。[锦鲤]

您好,我这边正在为您查询,请稍等一下,我这边马上回复您~[锦鲤]

您好,很高兴为您解答。[锦鲤]数组函数中的*是什么意思;

excel函数公式中数组,要真正定义,还是比较难的。简单的说,数组就是多个元素的集合。一个单元格区域,包含有多个数据,把它作为整体参与数据运算,可以认为这个区域的数据就是一个数组。参与运算的一组数据,,如{1,3,4,6},也是一个数组。

excel数组公式,可简单理解为在运算过程中是多个算式同时进行运算的,或运算结果是多值的。例如:“=A1:A5*B1:B5”,这个算式包含了A1*B1、A2*B2、A3*B3、A4*B4、A5*B5,其结果也有5个值,公式“=A1:A5*B1:B5”就是数组公式。

希望以上回答对您有所帮助~ 如果您对我的回答满意的话,麻烦给个赞哦~[锦鲤]

提问所以*这个符号是和的的意思吗还是乘?

回答乘

提问好的谢谢

回答如果您觉得我回答的问题对您有所帮助,麻烦给个赞哦~

热心网友 时间:2022-03-29 15:12

1、数组,顾名思义,是相同类型的数组成的一个组,也就是说是把相同类型的一系列数据统一编制到某一个组别中。这样就可以通过数组名+索引号简单快捷的操作大量数据。这就和全校学生一样,把学生分成多个班级,每个学生都是班级中的一员,如果要找张三,如果没有班级的话,就要在全校学生中一个一个寻找,一直到找到为止;但是如果引入了班级,就可以在某某班级中寻找张三,这样就更加方便快速了。

2、一般有四种数组定义方式,以一维数组为例:
//定义指定维数的数组
int arr[10];
//定义不指定维数的数组,数组维数有初化列表元素个数决定。
int arr[] = {1,2,4};
//定义指定维数的数组,初始化不完全时,系统将未初始化元素初始化为0
int arr[10] = {1,2};
//动态分配一个数组。下面分配了一个有10个元素的数组。
int *arr =(int *) malloc(10 * sizeof(int));

热心网友 时间:2022-03-29 17:20

前面说得差不多
一维数组就是
摆成一排的盒子
二维数字就是
在摆成一排的盒子的基础上
又摆了很多排
比如说
int
array[n];
整形的长度为n的数组array

热心网友 时间:2022-03-29 19:45

把简单变量想像成一个一个的帐篷
把一维数组想像成一排平房
把二维数组想像成一幢楼房,如:第N层的第M个房间

热心网友 时间:2022-03-29 22:26

数组就是在内存中分配的一块连续的内存空间
是一个由若干同类型变量组成的集合
可以通过数组名来访问整个数组

热心网友 时间:2022-03-30 01:24

楼上回复的好长。个人理解:数组就是一串连续的存储数据的空间。因为内存空间是连续的,如果知道每个变量的内存占用大小,那么知道首个元素的内存地址(指针),就可以访问所有的元素,一般利用++操作。

热心网友 时间:2022-03-30 04:56

数组是一种复合数据类型,由一系列相同类型的元素组成

热心网友 时间:2022-03-30 08:44

在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
关于可变长数组(VLA)的问题:原来的C标准中是不允许可变长数组出现的,但是在C99中,加入了对VLA的支持,也有不少编译器已经支持这个了,而且好像没有太多的人用这个可变长数组。   如果有过用其它语言编程的经历,那么想必会熟悉数组的概念。由于有了数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组有上界和下界,数组的元素在上下界内是连续的。因为 Visual Basic对每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。   此处数组是程序中声明的变量数组。它们不同于控件数组,控件数组是在设计时通过设置控件的 Index 属性规定的。变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。   一个数组中的所有元素具有相同的数据类型(在在C、C++、Java中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、 字符串 、数值等等)。 可以声明任何基本数据类型的数组,包括用户自定义类型(请参阅 “再论编程”中的“创建自己的数据类型”)和对象变量(请参阅“用对象编程”)。   如果要用户输入的是一个数组,一般是用一个循环,但是在输入前也需要固定数组的大小。   compact跟变长数组没有太大的关系,也应该用不到变长数组。因为一般的传数组到函数中就是传数组的地址和元素的个数的,那只是一个提示,不是要求。   原型可以这样写(假设数组的元素是type):   int compact(type *Array,int Count)   数组类型说明 在C语言中使用数组必须先进行类型说明。   数组说明的一般形式为: 类型说明符 数组名 [常量表达式],……; 其中,类型说明符是任一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

  int a[10]; 说明整型数组a,有10个元素。   float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。   char ch[20]; 说明字符数组ch,有20个元素。
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 地暖安装需要注意什么? 地暖安装标准有哪些? 有关地暖的问题 C语言中如何定义数组 地暖安装规范是什么标准 间距是多少 地暖管铺设是越密越好吗 地暖管铺设规范 哪位说说地暖排管间距多少合适 一平方米需要多少米地暖管 地暖施工验收规范标准有哪些 铺设地暖管,间距一般多宽最好? 地暖管安装间距怎么计算? 地暖排管的标准要求 地暖安装依据什么国家标准 地暖管盘管标准间距是多少 地暖管间距不能太大也不能太小,地暖管间距的标准... 地暖管间隔是多少 请教,我儿3岁每天老流鼻涕,感冒时流,感冒好了还... 3岁的孩子感冒,流鼻涕,应该怎么办? 我家幼儿3岁了,天天咳嗽流鼻涕打喷嚏 三岁孩子流鼻涕吃什么药 地暖打压规范标准 C语言的基本语法有哪些? 五路地暖是如何分配的? pe-rt地热管的规格壁厚国家标准是多少 必须先定义后使用B,定义数组时,数组维界值可以不 地暖管打压多少为标准? 51程序中的函数名、变量名及数组名必须先( )后(... php中数组是不是不用先定义? c语言中数组能不能先定义,然后直接赋给初值。 C语言为什么要规定对所有用到的变量要“先定义,后... SD卡在哪? 标准篮球架的高度一般是多高 篮球架高多少米 成年人使用的篮筐高度有多高? 篮球架标准高度是多少? 詟獭葋鎴戞洿涔版敹阔虫満钬桦痉鐢烶L660鍙࿿... 医院股东合作合同协议范本模板 美容院合并经营合同:两家美容院合并经营如何订合同! 个体经营户(美容院)里隐性合伙人私自偷转让股份给... 股东之间私下签订的《合作协议书》是否具有法律效益?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com