C语言之初识数组,简单认识一维数组,二维数组,字符数组

        c语言的课学到指针了,今天看了看数组,来简单认识一下。

        首先呢,数组之所以归到指针这一节里面,(指针就是地址),很显然,他其实也是个地址。那么数组是如何定义的呢?

一维数组

          一维数组其实就是有序排列的一组数,我们来试着定义一个一维数组;

         1,2,3,4,5,6,7

         int a[6]

 此时a[0]=1,a[1]=2,a[2]=3,......,a[6]=7

通过这个简单的例子,我们来总结一下,数组是如何定义的。

变量类型名       数组名[这组数的数字多少-1]  (因为这组数的下标是由0开始的

(就是这组数字的类型的名称,就是上述的1,2,...,7)

注意:中括号里面必须是一个确定的数字,并且是整型常量

像这样a[10.0]就是不行的;

int n;

int a[n];

这个也不行,因为n是一个不确定的数;

#define  N  20

int  a[5+N];

这个是正确的,因为N是一个确定的数。

像这样int a[5]={1,2,3,4,5,6},也是可以的,这个叫做给数组初始化;其中大括号里的数字的个数必须小于等于数组的下标加1,如果小于下标加1,如int a[5]={1,2};那么从a[2]到a[5]的所有元素的值都为0;如果大于数组的下标加1,系统就会出错。

中括号里的数字也可以省略,系统可以根据大括号里元素的个数,来确定中括号里数字的具体值。

那么我们该如何输出下标从1开始的一个数组呢?

#include <stdio.h>

int main()

{

int a[6];

int i;

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

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

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

}

这样就可以实现数组的下标从1开始了。

二维数组

        如果说一维数组只有一行的话,那么二维数组就是在一维数组的基础上多加了几行。

        二维数组类似矩阵,我们现在来看一下二维数组如何定义。

int a[3][5]

其中3代表行数,5代表列数,这个二维数组下标展开如下

a[0][0]  a[0][1]  a[0][2]  a[0][3]  a[0][4]

a[1][0]  a[1][1]  a[1][2]  a[1][3]  a[1][4]

a[2][0]  a[2][1]  a[2][2]  a[2][3]  a[2][4]

由此可见行下标最大为行数减1,列下标最大为列数减1

行列式的转置中的关键语句为a[i][j]=a[j][i],行标与列标互换即可。

二维数组可以实现矩阵的相关运算,后面熟悉掌握后可以试着自己写写相关代码。

数组名虽然可以表示变量地址,但是应用scanf函数时一维数组和二维数组都要加&。

字符数组

      与一维数组类似,字符数组也满足相应规则;

      char  数组名[元素数]={元素初值列表}

注意这里i是元素的个数,相当于这个字符数组存储在a[0]到a[i-1]之间,a[i]存储结束标志"\0",这个标志必须有。

所以定义的元素数一定要大于实际使用的有效长度。

     我们在输入输出时必须注意加“\0”   。

%c是逐个输入输出字符;

%s是整体输入输出字符;

关于字符串的控制就先说这么多,还有很多字符串的相关函数,今天先了解这么多。

另外用%s,整体输入输出时,应用scanf函数不用加取地址符号,直接写数组名,因为数组名就可以代表地址,只有整体输入输出才可以这样,其他数组元素单个输入输出必须加&。

欢迎大家发现错误积极留言,一起进步。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值