c语⾔中数组的概念及作⽤,C语⾔数组的定义及其使⽤⽅法什么是数组?
在我们学习数组前先让我们介绍⼀下c语⾔中数组是什么?数组就是⼀个个元素按照⼀定顺序排列的集合。它将数据从最低的内存地址保存到最⾼的内存地址。
声明⼀个数组
c语⾔规定了声明数组的格式:
type Name [ Size ];
type:需要定义的数据类型,可以是int,long long等。
Name:声明数组的名字,可以是jun,bian或其它你想使⽤的名字。
Size:数组的⼤⼩,⽐如你在[ ]中写了10,那么这个数组就分配了10个内存地址给你使⽤,也就是说你可以在这个数组中写⼊10个符合你定义的数据类型的元素。
初始化数组
在声明完数组后我们可以初始化数组,具体⽅法如下:
⼀、
int jun[5]={0,1,2,3,4};
这样⼦我们就将0,1,2,3,4这五个int值依次赋给了数组jun。
需要注意的是我们在初始化数组时不能将超过我们上限的元素赋给数组,也就是说我们规定了数组中只能有5个元素,就不能把第6个元素赋给数组。
⼆、
int jun[]={0,1,2,3,4};
我们在定义时可以省略数组的⼤⼩,这时我们在第⼀次初始化数组时给出的元素数量就是这个数组的⼤⼩。
三、
有时我们迫切的需要将数组中所有的值都初始化成⼀个数,那么在这⾥我们介绍⼀下memset()函数及其⽤法:
memset()函数可以直接对内存进⾏读写,是⼀种较快捷的初始化⽅式。
memset(*name,int,n);
memset()函数会对*name的前n个内存地址进⾏初始化,初始化的数值是int。
int jun[5]={};
memset(jun,0,5);
在这个⽰例中我们将jun这个数组中的5个元素都初始化成了0。
访问数组中的值
我们可以通过以下⽅式来访问数组中的值:
a=jun[0];
在这⾥我们将jun数组中的第1个元素赋值给了a这个变量。
tip:在数组中第⼀个元素对应的是数组的第0位,第⼆个元素才是第1位)
使⽤指针来访问数组
我们同样可以使⽤指针来访问数组中的值:
#include"stdc++.h"
int main() {
int jun[5] = { 0,1,2,3,4 };
int *bian;
bian = jun;
printf("%d", *bian + 0);
system("pause");
}
调试后它会出现以下结果:
当我们将第⼀个元素的地址赋给了bian这个指针后,我们可以通过*bian+n这种⽅法读取数组中我们想要读取的第n个元素,因为数组中所有元素的内存地址都是依次排列的。
*实例
接下来展⽰的实例会让你对数组的使⽤⽅法有个初步的概念:
#include"stdc++.h"
int main() {
int jun[10];
int a,b;
int *bian;
memset(jun, 0, 10);
for (a = 0;a < 10;a++) {
jun[a] = a;
}
bian = jun;
for (b = 0;b < 10;b++) {
printf("%d",*bian+b );
printf("\n");
}
system("pause");
return 0;
}
调试后会出现以下结果:
*多维数组
c语⾔中不仅可以使⽤⼀维数组(也就是我们刚才讲的)还可以使⽤多维数组,接下来我们来讲解⼀下最常见的多维数组——⼆维数组。⼆维数组的声明⽅式:
int jun[2][3]={
{0,1,2}
{3,4,5}
}
可以看到与⼀维数组的声明⽅式是相似的。
访问⼆维数组:
a=jun[x][y];
访问⼆维数组中的元素和访问⼀维数组中的元素⽅法差不多。
实例:
这个实例会先定义⼀个⼆维数组,然后按列依次赋值,最后依次输出。#include"stdc++.h"
int main() {
int jun[5][5];
int x=0, y=0,z,a=0;
z = y;
memset(jun, 0, sizeof(jun));
for (int i = 0;i < 5;i++) {
jun[x][y] = a;
for (int i = 0;i < 5;++i) {
jun[x][y] = a;
++a;
++y;
}
y = 0;
++x;
}
x = 0, y = 0;
for (int i = 0;i < 5;i++) {
printf("%d", jun[x][y]);
printf(" ");
数学数组的定义是什么
for (int i = 0;i < 4;++i) {
++x;
printf("%d", jun[x][y]);
printf(" ");
}
printf("\n");
++y;
x = 0;
}
system("pause");
return 0;
}
调试后它会出现以下结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。