c语言二维数组字符串赋值,C语言笔记(二)--- 数组、函数

七、数组

在C语言中,数组属于构造数据类型。

数组根据元素的类型不同,数组又可以分为 数值数组 、字符数组 、指针数组 、结构数组 等各种类别。

本章介绍 数值数组 和 字符数组 。

1. 一维数组的定义和引用

定义: 类型说明符 数组名 [常量表达式];

例如:int a[10]; float b[10],c[20]; char ch[20];

下标从 0 开始;

不能在 [] 中使用变量来表示元素的个数,但是可以是符号常数或常量表达式。

引用:数组名[下标]

其中下标只能为整型常量或整数表达式。

如为小数时,C编译将自动取整。。

初始化

给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可以采用初始化赋值和动态赋值的方法。

初始化赋值形式举例: int a[10]={0,1,2,3,4,5,6,7,8,9};

C语言对数组的初始化赋值有以下几点规定:

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

例如:int a[10]={0,1,2,3}; 表示只给前面 4个元素赋值。而后面的值自动赋 0 值。

2)只能给元素逐个赋值,不能给数组整体赋值。例如,给10个元素全部赋1值,只能写为:

int a[5]={1,1,1,1,1}; 而不能写为 int a[5]=1;

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

int a[5]={1,2,3,4,5}; 可以写成 int a[]={1,2,3,4,5};

2. 一维数组程序举例:

main() {

int i,max,a[10];

printf("input 10 numbers:\n");

for (i=0;i<10;i++)

scanf("%d",&a[i]);

max=a[0];

for (i=1;i<10;i++)

if(a[i]>max) max=a[i];

printf("maxmum=%d\n",max);

}

例2:排序

main() {

int i,j,p,q,s,a[10];

printf("input 10 numbers:\n");

for (i=0;i<10;i++)

scanf("%d",&a[i]);

for (i=0;i<10;i++) {

p=i;q=a[i];

for(j=i+1;j<10;j++)

if(q

if(i!=p) {

s=a[i];

a[i]=a[p];

a[p]=s;

}

printf("%d",a[i]);

}

}

3. 二维数组的定义和引用

定义:类型说明符 数组名[常量表达式1][常量表达式2]

表达式1 为第一维下标的长度,

表达式2 是第二维下标的长度

例如:int a[3][4]; 说明了一个三行四列的数组,数组名为 a,其下标变量的类型为整型。

该数组的下标变量共有 3*4 个。

二维数组在概念上是二维的,但在实际的硬件存储器中却是连续编址的,也就是说存储器单元是按一维线性排列的。

如何在一维存储器中存放二维数组,可有两种方式:

一种是按行排列,即放完一行之后顺次放入第二行。

另一种是按列排列,即放完一列后再顺次放入第二列。

在C语言中,二维数组是按行排列的。即:先存放 a[0] 行,再存放 a[1] 行,最后存放 a[2] 行。

二维数组的初始化

可以按行分段赋值,也可以按行连续赋值。

例如:

int a[5][3]={ {80,75,92},{61,65,71},{59,63,80},...};

int a[5][3]={80,75,92,61,65,59,....};

对于二维数组初始化赋值的说明:

1)可以只对部分元素赋初值,未赋初值的元素自动取0值。

例如:

int a[3][3]={ {1},{2},{3}}; 是对每一行的第一列元素赋初值,未赋值的元素为0.

2)如对全部元素赋初值,则第一维的长度可以不给出:例如:

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

可以写为

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

数组是一种构造类型的数据。

二维数组可以看作是一维数组的嵌套而构成的,设一维数组的每个元素都又是一个数组,就组成了二维数组。

当然,前提是各元素类型必须相同。

根据这样的分析,一个二维数组也可以分解成多个一维数组。

C语言允许这种分解。如二维数组 a[3][4] 可以分解为 3 个一维数组,其数组名分别为:a[0] a[1] a[2] ,对这 3 个一维数组不需要另作说明就可以使用。

必须强调的是 a[0] a[1] a[2] 不能当作下标变量使用,他们是数组名,而不是一个单纯的下标变量。

4. 字符数组:

char c[10];

由于字符型和整型通用,也可以定义为 int c[10] ,但这时每个数组元素占2个字节的内存单元。

字符数组初始化

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值