第六章 数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六章 数组相关的知识,希望对你有一定的参考价值。
- 一维数组的定义
例如:
int array[5];
int 为类型说明符; array 为数组名称; [5] 为常量表达式,表示数组包含5个数组元素。
注:(1)常量表达式必须用中括号[ ]括起来,定义形式末尾必须加分号;
(2)“类型说明符”用来说明数组中各个元素的类型;
(3)“常量表达式”表示数组长度,即元素的个数;
(4)数组名是说明数组所用的标识符,其命名规则与标识符的命名规则相同;
(5)根据数组的存储分配方法,数组中各个元素顺序相邻地存储在一段连续的内存中。
- 一维数组的引用
1 #include <stdio.h>
2
3 void main(void)
4 {
5 int a[5], i;
6 printf("please input 5 int numbers:\n");
7 for (i = 0; i < 5; i++)
8 {
9 scanf("%d",&a[i]);
10 }
11 printf("按照相反顺序输出为:\n");
12 for (i = 4; i >= 0; i--)
13 {
14 printf("%d ",a[i]);
15 }
16 }
- 一维数组的初始化
(1) 可以在数组的初始化部分将各个元素的值用逗号隔开:
int a[5]={12,4,5,6,32};
(2) 如果元素值的个数和数组长度相等,可以不指定数组长度:
int a[]={12,4,5,6,32};
(3) 可以只给数组的部分元素赋初值:
int a[5]={12,47,6}; //将 a[0], a[1], a[2] 的值分别初始化为12、47、6
- 二维数组的定义
类型说明符 数组名[变量表达式1][变量表达式2];
int a[2][3];
注:
(1)"变量表达式1"表示行数,"变量表达式2"表示列数
(2)二维数组在内存中存放的顺序是:按行存放,即先存第一行再存第二行
- 二维数组的初始化
对二维数组的初始化方法如下所示:
(1)分行对所有元素赋初值:
int a[2][3]={{1,7,6},{2,3,17}};
//第一个花括号按顺序赋值给第一行
(2)可以将所有的数据写在一个花括号里面:
int a[2][3]={1,7,6,2,3,17};
//根据数据元素存储的优先原则,先赋值个第一行的元素,再赋值给第二行的元素
(3)可以对每一行的前一部分元素赋初值:
int [2][3]={{1},{2,6}};
//1,2,6分别赋值给a[0][0],a[1][0],a[1][1]
(4)如果对全部的元素赋初值,则第一维的长度可以不指定,但第二维的长度不能省
int a[][3]={1,7,6,2,3,17};
//也可以只对部分元素赋初值,但应分行赋初值,如:
int a[][3]={{1},{2,6}};
- 二维数组程序举例
按行优先次序输入一个矩阵,然后按列优先次序输出
#include<stdio.h>
void main(void)
{
int a[2][3], i, j;
printf("请输入一个2x3矩阵:\n");
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d",&a[i][j]);
}
}
printf("输出矩阵如下:\n");
for (j = 0; j < 3; j++)
{
printf("\n");
for (i = 0; i <2; i++)
{
printf("%d ",a[i][j]);
}
}
return;
}
字符数组
- 字符串常量
字符数组可以被视为是字符变量的集合。和它对应的是字符串常量,所谓字符串常量就是一对双引号括起来的字符常量的集合。例如:“abc”,“hello”都是字符串常量。
字符串在存储到内存中时,系统会自动添加一个 ‘\0‘ 作为字符串结束标志,代表ASCII码值为 0 的字符,不显示,在对字符串进行操作的时候,如果遇到 ‘\0‘ 就表示字符串结束。
需要注意的是: ‘a‘ 是一个字符常量,只包含一个字符; 而 "a" 是一个字符串常量,它包含两个字符,字符‘a‘ 和字符串结束标识字符 ‘\0‘ 。
- 字符数组的定义
//字符数组包括一维字符数组和多维字符数组(以二维为例)
char 数组名[变量表达式];
char 数组名[变量表达式1][变量表达式2];
例如:
char a1[10]; //声明1个长度为10的字符串
char a2[3][10]; //声明3个长度为10的字符串
- 字符数组的引用
以上是关于第六章 数组的主要内容,如果未能解决你的问题,请参考以下文章