c语言枚举和数组

枚举和数组

1.以下代码定义了这种新的数据类型 - 枚举型



enum DAY
{
      MON=0, TUE, WED, THU, FRI, SAT, SUN
};
 


(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。


(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。


(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。


(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。


(5) 枚举型是预处理指令#define的替代。


(6) 类型定义以分号;结束。
2.
enum weekday{sun,mon,tue,wed,thu,fri,sat} day; day是枚举类型变量
其中,sum,mon,…,sat 等称为枚举元素或枚举常量,它们是用户定义的标识符。 
需要说明的有以下几点。① 枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。 
② 枚举元素作为常量,它们是有值的,C 语言在编译时按定义的顺序使它们的值为,0.1,2,…。
3.数组
数组是相同类型的值的集合。声明数组变量:int a[5];[5]表示元素个数为5
数组中元素的访问形式:数组[下标索引]下标从0开始到n-1;
可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数和第2维的长度可以确定第一维的长度。
  int a[ ][3]={ 1,2,3,4,5,6};


下面程序输出的结果是()
#include <stdio.h>
void main()
{
    char mm[4][3] = { "12", "34", "56", "78" }, *pn[4];
    int k, s=0;
   for(k=0; k<4; k++)
       pn[k] = mm[k];
  for(k=1; k<4; k+=2)
      s=s*10 + pn[k][1] - '0';
    printf("%s\n", s);
}
A、48       B、26       C 、3478     D、567
答案:A
解析:一开始可能是我对于题目理解错了,后来我才发现,题目有个陷阱,其实对于二维数组初始化之后的结果为
               1    2   [ ]   
               3    4   [ ]
               5    6   [ ]
               7    8   [ ]
这样之后再将再将指针数组指向该二维数组,然后计算
第一次pn[1][1] = 4;   s=4;
第二次pn[3][1] =8;   s=10*4 + 8=48;
循环两次结束,最终结果为48
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值