大埔县住房和城乡规划建设局网站,做兼职设计去哪个网站好,网站主题下载,永康电子商务网站建设公司C数组
一、C数组
C 语言支持数组数据结构#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据#xff0c;但它往往被认为是一系列相同类型的变量。
数组的声明并不是声明一个个单独的变量#xff0c;比如 runoob0、runoob1、…、runoo…C数组
一、C数组
C 语言支持数组数据结构它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据但它往往被认为是一系列相同类型的变量。
数组的声明并不是声明一个个单独的变量比如 runoob0、runoob1、…、runoob99而是声明一个数组变量比如 runoob然后使用 runoob[0]、runoob[1]、…、runoob[99] 来代表一个个单独的变量。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素最高的地址对应最后一个元素。 数组中的特定元素可以通过索引访问第一个索引值为 0。
二、声明数组
在 C 中要声明一个数组需要指定元素的类型和元素的数量如下所示 type arrayName [ arraySize ]; 这叫做一维数组。arraySize 必须是一个大于零的整数常量type 可以是任意有效的 C 数据类型。例如要声明一个类型为 double 的包含 10 个元素的数组 balance声明语句如下 double balance[10]; 现在 balance 是一个可用的数组可以容纳 10 个类型为 double 的数字
三、初始化数组
在 C 中您可以逐个初始化数组也可以使用一个初始化语句如下所示 double balance[5] {1000.0, 2.0, 3.4, 7.0, 50.0}; 大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。
如果省略掉了数组的大小数组的大小则为初始化时元素的个数。因此如果 double balance[] {1000.0, 2.0, 3.4, 7.0, 50.0}; 创建一个数组它与前一个实例中所创建的数组是完全相同的。下面是一个为数组中某个元素赋值的实例 balance[4] 50.0; 上述的语句把数组中第五个元素的值赋为 50.0。所有的数组都是以 0 作为它们第一个元素的索引也被称为基索引数组的最后一个索引是数组的总大小减去 1。以下是上面所讨论的数组的的图形表示 下图是一个长度为 10 的数组第一个元素的索引值为 0第九个元素 runoob 的索引值为 8:
四、访问数组元素
数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内跟在数组名称的后边。例如 double salary balance[9]; 上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念即声明数组、数组赋值、访问数组
#include stdio.hint main ()
{int n[ 10 ]; /* n 是一个包含 10 个整数的数组 */int i,j;/* 初始化数组元素 */ for ( i 0; i 10; i ){n[ i ] i 100; /* 设置元素 i 为 i 100 */}/* 输出数组中每个元素的值 */for (j 0; j 10; j ){printf(Element[%d] %d\n, j, n[j] );}return 0;
}执行结果
五、C数组详解
5.1 多维数组
C 语言支持多维数组。多维数组声明的一般形式如下 type name[size1][size2]…[sizeN]; 例如下面的声明创建了一个三维 5 . 10 . 4 整型数组 int threedim[5][10][4]; 二维数组 多维数组最简单的形式是二维数组。一个二维数组在本质上是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组形式如下 type arrayName [ x ][ y ]; 其中type 可以是任意有效的 C 数据类型arrayName 是一个有效的 C 标识符。一个二维数组可以被认为是一个带有 x 行和 y 列的表格。下面是一个二维数组包含 3 行和 4 列 int x[3][4]; 因此数组中的每个元素是使用形式为 a[ i , j ] 的元素名称来标识的其中 a 是数组名称i 和 j 是唯一标识 a 中每个元素的下标
初始化二维数组 多维数组可以通过在括号内为每行指定值来进行初始化。下面是一个带有 3 行 4 列的数组
int a[3][4] { {0, 1, 2, 3} , /* 初始化索引号为 0 的行 */{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};内部嵌套的括号是可选的下面的初始化与上面是等同的
int a[3][4] {0,1,2,3,4,5,6,7,8,9,10,11};访问二维数组元素 二维数组中的元素是通过使用下标即数组的行索引和列索引来访问的。例如 int val a[2][3]; 上面的语句将获取数组中第 3 行第 4 个元素
#include stdio.hint main ()
{/* 一个带有 5 行 2 列的数组 */int a[5][2] { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};int i, j;/* 输出数组中每个元素的值 */for ( i 0; i 5; i ){for ( j 0; j 2; j ){printf(a[%d][%d] %d\n, i,j, a[i][j] );}}return 0;
}可以创建任意维度的数组但是一般情况下我们创建的数组是一维数组和二维数组
5.2 传递数组给函数
如果您想要在函数中传递一个一维数组作为参数您必须以下面三种方式来声明函数形式参数这三种声明方式的结果是一样的因为每种方式都会告诉编译器将要接收一个整型指针。同样地您也可以传递一个多维数组作为形式参数 方式 1 形式参数是一个指针
void myFunction(int *param)
{
.
.
.
}方式 2 形式参数是一个已定义大小的数组
void myFunction(int param[10])
{
.
.
.
}方式 3 形式参数是一个未定义大小的数组
void myFunction(int param[])
{
.
.
.
}下面这个函数它把数组作为参数同时还传递了另一个参数根据所传的参数会返回数组中元素的平均值
double getAverage(int arr[], int size)
{int i;double avg;double sum;for (i 0; i size; i){sum arr[i];}avg sum / size;return avg;
}调用上面的函数如下所示 平均值是 214.400000 5.3 从函数返回数组
C 语言不允许返回一个完整的数组作为函数的参数。但是可以通过指定不带索引的数组名来返回一个指向数组的指针
int * myFunction()
{
.
.
.
}另外C 不支持在函数外返回局部变量的地址除非定义局部变量为 static 变量。 现在让我们来看下面的函数它会生成 10 个随机数并使用数组来返回它们具体如下
#include stdio.h
#include stdlib.h
#include time.h/* 要生成和返回随机数的函数 */
int * getRandom( )
{static int r[10];int i;/* 设置种子 */srand( (unsigned)time( NULL ) );for ( i 0; i 10; i){r[i] rand();printf( r[%d] %d\n, i, r[i]);}return r;
}/* 要调用上面定义函数的主函数 */
int main ()
{/* 一个指向整数的指针 */int *p;int i;p getRandom();for ( i 0; i 10; i ){printf( *(p %d) : %d\n, i, *(p i));}return 0;
}5.4 指向数组的指针
数组名是一个指向数组中第一个元素的常量指针。因此在下面的声明中 double balance[50]; balance 是一个指向 balance[0] 的指针即数组 balance 的第一个元素的地址。因此下面的程序片段把 p 赋值为 balance 的第一个元素的地址 double *p; double balance[10]; p balance; 使用数组名作为常量指针是合法的反之亦然。因此*(balance 4) 是一种访问 balance[4] 数据的合法方式。
一旦您把第一个元素的地址存储在 p 中您就可以使用 p、(p1)、*(p2) 等来访问数组元素。下面的实例演示了上面讨论到的这些概念
#include stdio.hint main ()
{/* 带有 5 个元素的整型数组 */double balance[5] {1000.0, 2.0, 3.4, 17.0, 50.0};double *p;int i;p balance;/* 输出数组中每个元素的值 */printf( 使用指针的数组值\n);for ( i 0; i 5; i ){printf(*(p %d) : %f\n, i, *(p i) );}printf( 使用 balance 作为地址的数组值\n);for ( i 0; i 5; i ){printf(*(balance %d) : %f\n, i, *(balance i) );}return 0;
}执行结果 菜鸟教程学习记录
文章转载自: http://www.morning.cfynn.cn.gov.cn.cfynn.cn http://www.morning.fpxms.cn.gov.cn.fpxms.cn http://www.morning.grqlc.cn.gov.cn.grqlc.cn http://www.morning.qfqld.cn.gov.cn.qfqld.cn http://www.morning.ghzfx.cn.gov.cn.ghzfx.cn http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn http://www.morning.qbrs.cn.gov.cn.qbrs.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.xnltz.cn.gov.cn.xnltz.cn http://www.morning.dndjx.cn.gov.cn.dndjx.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.wctqc.cn.gov.cn.wctqc.cn http://www.morning.knpbr.cn.gov.cn.knpbr.cn http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn http://www.morning.dcpbk.cn.gov.cn.dcpbk.cn http://www.morning.smcfk.cn.gov.cn.smcfk.cn http://www.morning.bkjhx.cn.gov.cn.bkjhx.cn http://www.morning.jgncd.cn.gov.cn.jgncd.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.ldqzz.cn.gov.cn.ldqzz.cn http://www.morning.rltw.cn.gov.cn.rltw.cn http://www.morning.tpqzs.cn.gov.cn.tpqzs.cn http://www.morning.yjmns.cn.gov.cn.yjmns.cn http://www.morning.rnygs.cn.gov.cn.rnygs.cn http://www.morning.xwrhk.cn.gov.cn.xwrhk.cn http://www.morning.jmnfh.cn.gov.cn.jmnfh.cn http://www.morning.ghjln.cn.gov.cn.ghjln.cn http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn http://www.morning.qhmql.cn.gov.cn.qhmql.cn http://www.morning.rgpy.cn.gov.cn.rgpy.cn http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn http://www.morning.jmmz.cn.gov.cn.jmmz.cn http://www.morning.nppml.cn.gov.cn.nppml.cn http://www.morning.jgnjl.cn.gov.cn.jgnjl.cn http://www.morning.lpyjq.cn.gov.cn.lpyjq.cn http://www.morning.bpmdz.cn.gov.cn.bpmdz.cn http://www.morning.rjljb.cn.gov.cn.rjljb.cn http://www.morning.mtqqx.cn.gov.cn.mtqqx.cn http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com http://www.morning.bkslb.cn.gov.cn.bkslb.cn http://www.morning.pwbps.cn.gov.cn.pwbps.cn http://www.morning.ypktc.cn.gov.cn.ypktc.cn http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn http://www.morning.gfznl.cn.gov.cn.gfznl.cn http://www.morning.znpyw.cn.gov.cn.znpyw.cn http://www.morning.dhqg.cn.gov.cn.dhqg.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.jlqn.cn.gov.cn.jlqn.cn http://www.morning.jmnfh.cn.gov.cn.jmnfh.cn http://www.morning.gqcd.cn.gov.cn.gqcd.cn http://www.morning.kcsx.cn.gov.cn.kcsx.cn http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn http://www.morning.zfcfx.cn.gov.cn.zfcfx.cn http://www.morning.nnykz.cn.gov.cn.nnykz.cn http://www.morning.frtt.cn.gov.cn.frtt.cn http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn http://www.morning.mpngp.cn.gov.cn.mpngp.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.kzqpn.cn.gov.cn.kzqpn.cn http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn http://www.morning.rnnq.cn.gov.cn.rnnq.cn http://www.morning.ljyqn.cn.gov.cn.ljyqn.cn http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn http://www.morning.dxrbp.cn.gov.cn.dxrbp.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.zwdrz.cn.gov.cn.zwdrz.cn http://www.morning.bgdk.cn.gov.cn.bgdk.cn http://www.morning.nydtt.cn.gov.cn.nydtt.cn http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn http://www.morning.cftkz.cn.gov.cn.cftkz.cn http://www.morning.xrlwr.cn.gov.cn.xrlwr.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn