c语言-----数组

一. 数组

     数组是由一系列类型相同的元素构成 。可以使用声明来告诉编译器你需要一个数组 。数组声明中包括数组元素的数目和元素的类型 。编译器根据这些信息创建合适的数组 。数组元素可以具有同普通变量一样的类型 。下面是数组声明的例子 :

     int   main( void )

    {

        float  candy [ 365 ] ;

        char  code[ 12 ] ;

        int  states[ 50 ] ;    

     } 

    方括号里([   ])表示candy和其他两个标识符均为数组 ,方括号内的数字指明了数组所包含的元素数目 。要访问数组的元素 ,可以使用下标数字来表示单个元素 。下标数字也称索引 ( index ),是从 0 开始计数的 。因此 ,candy [ 0 ] 是数组candy的首元素 ,candy [ 364 ] 是第365个元素 ,也就是最后一个元素 。

1. 初始化

    在程序中通常用数组来存储数据 。

    例 :

          int  fix = 1 ;

          float  flax = PI * 2;   

          int  main ( void )

          {

              int  power [ 8 ] = {  1 , 2 , 4 , 6 , 8 , 16 , 32 , 64 } ;

              .....

           }

      可以使用花括号括起来的一系列数组来初始化数组 。数组之间用逗号隔开 ,在数值和逗号之间可以使用空格符 。首元素 power [ 0 ] 被赋值为 1 以此类推。

      初始化列表中的元素数目应该和数组大小一致 。当数值数目少于数组元素数目时 ,多余的数组元素被初始化为 0 。也就是说 ,如果不初始化数组,数组元素和未初始化的普通变量一样 , 其中存储的是无用的数值 ;但是如果部分初始化数组,未初始化的元素则被设置为 0 。

      注意 :当使用控的方括号对数组进行初始化时,编译器会根据列表中的数值来确定数组大小 。

                   注意 for 语句循环的控制语句 ,可以让计算机来计算数组的大小 。

      #include <stdio.h>

      int main()

      {

        const  int  days[  ] = {31,28,31,30,31,30,31,31,30,31};

        int  index;


       for( index = 0 ; index < sizeof  days / sizeof days[ 0 ] ; index++)

           printf("Month %2d has %d days.\n" ,index + 1,days[ index ]);

       return  0;

       }

    2. 多维数组

       数组的数组,称为 二维数组 。

       float  rain[ 5 ][ 12 ] ;

      rain中包含5个数组,rain[ 0 ],rain[ 1 ],rain[ 2 ],ran[ 3 ],rain[ 4 ],每个元素中又包含12个数组,也就是说,rain中每个元素包含一12个float数组的数组。

      二维数组的初始化和一维数组的初始化的注意点是一样的 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序栈是一种基于数组实现的栈,它的特点是具有随机存取的特性。顺序栈的基本运算包括进栈、出栈和查看栈顶元素。进栈操作将元素插入到栈顶,出栈操作将栈顶元素删除并返回,查看栈顶元素操作返回栈顶的元素值,但不修改栈的状态。 在C语言中,顺序栈的存储结构可以使用一个一维数组来存放栈中的元素,同时使用一个指示器top来指示栈顶的位置。在进行进栈和出栈操作时,需要更新top的值,使其指向栈顶元素。 下面是一种常见的顺序栈的定义和基本操作的示例代码: ```c // 定义栈中元素的数据类型 typedef int StackElementType; // 定义顺序栈的存储结构 #define Stack_Size 100 // 栈的最大容量 typedef struct { StackElementType elem[Stack_Size]; // 用数组存放栈中元素 int top; // 栈顶指针 } SeqStack; // 初始化顺序栈 void Init_SeqStack(SeqStack *S) { S->top = -1; // 初始时栈为空,栈顶指针置为-1 } // 进栈操作 void Push_SeqStack(SeqStack *S, StackElementType x) { if (S->top == Stack_Size - 1) { printf("栈已满,无法进栈"); return; } S->top++; // 栈顶指针加1 S->elem[S->top] = x; // 将新元素放入栈顶位置 } // 出栈操作 StackElementType Pop_SeqStack(SeqStack *S) { if (S->top == -1) { printf("栈为空,无法出栈"); return -1; // 返回一个特殊值表示出错 } StackElementType x = S->elem[S->top]; // 获取栈顶元素的值 S->top--; // 栈顶指针减1 return x; // 返回栈顶元素的值 } // 查看栈顶元素 StackElementType GetTop_SeqStack(SeqStack *S) { if (S->top == -1) { printf("栈为空"); return -1; // 返回一个特殊值表示出错 } return S->elem[S->top]; // 返回栈顶元素的值 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值