精华内容
下载资源
问答
  • C语言枚举指针的实例详解总结一下, 定义枚举,用typedef enum关键字, 比如 typedef enum{Red,Green,Blue} Color3;枚举到数值的转换,如果没有指定代表数值就是从0开始算, 比如 Color3 c=Red; printf("%d",c);会...

    C语言中枚举与指针的实例详解

    总结一下, 定义枚举,用typedef enum关键字, 比如 typedef enum{Red,Green,Blue} Color3;

    枚举到数值的转换,如果没有指定代表数值就是从0开始算, 比如 Color3 c=Red; printf("%d",c);会显示0, 除非指定 如typedef enum{Red=3,Green=5,Blue=10} Color3;

    关于类型指针的定义, 定义的时候在变量名左边加*代表此变量只是一个空指针而已, 若需要赋初始值,只能=0或者=NULL(NULL其实也是0),后面的语句必须要真正赋上新地址或者申请内存才能使用.

    而指针的使用亦非常简单, 比如定义 int   i=10; *pi=0; 定义好的指针pi, 如果后面用pi則表示引用pi这个指针, 若用*pi則表示引用pi指向的具体数值 .

    比如 :

    int i=10, *pi=0;

    pi= &i ;// &就是取地址

    *pi+=5;

    printf("%d",*pi); // 15

    printf("%d",i); //因为pi指向i的地址,*pi变了,i也跟着变, 也是15

    OK, 若指针要申请新内存怎么做呢, 可以用malloc,如:

    #include

    ...

    int *p=0;

    p=(int*) malloc(sizeof(int)); // 这里为p指针申请一块实际的内存

    *p=12345; //为p所指的内存赋值

    printf("%d",*p); // 12345

    free(p) ;// 释放内存

    OK, 那么指针参数如何传送呢,如下:

    void testP(int *p){

    *p+=100;

    }

    void main(){

    int i=10;

    testP(&i);

    testP(&i);

    printf("%d", i): //你觉得是多少呢?

    }

    如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 走进并深刻的了解枚举类型 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不...

    emmm大概是假期太长,以致于基础的知识都快忘掉了,哎。。。那就记个流水账,防止老年痴呆趴

    走进并深刻的了解枚举类型

    在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。

    谨小慎微:

    枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型

    枚举类型的定义和枚举变量的说明

    1.枚举的定义枚举类型定义的一般形式为:
     enum 枚举名{ 枚举值表 }; 
    

    在枚举值表中应罗列出所有可用值。这些值也称为枚举元素

    举个栗子

    该枚举名为 weekday,枚举值共有 7 个,即一周中的七天。凡被说明为 weekday 类型变量的取值只能是七天中的某一天。

    2. 枚举变量的说明

    如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明同时定义说明或直接说明
    设有变量 a,b,c 被说明为上述的 weekday,下述三选一:

     1. enum weekday{ sun,mou,tue,wed,thu,fri,sat }; 
    	enum weekday a,b,c; 
    	
     2. enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c; 
     
     3. enum { sun,mou,tue,wed,thu,fri,sat }a,b,c; 
    

    枚举类型变量的赋值和使用

    枚举类型在使用中有以下规定:

    1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

      一个栗子

      对枚举 weekday 的元素再作以下赋值:

    	sun=5; 
    	mon=2; 
    	sun=mon; 
    

    都是错误的。

    1. 枚举元素本身由系统定义了一个表示序号的数值,从 0 开始顺序定义为 0,1,2…。

      例如

      在 weekday 中,sun 值为 0,mon 值为 1,…,sat 值为 6。

    再看个栗子
    main()
    { 
    	 enum weekday 
    	 { sun,mon,tue,wed,thu,fri,sat } a,b,c; 
    	 a=sun; 
    	 b=mon; 
    	 c=tue; 
    	 printf("%d,%d,%d",a,b,c); 
    } 
    

    说明:
    只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

    	a=sum; 
    	b=mon; 
    

    正确的。
    而:

    	a=0; 
    	b=1; 
    

    错误的。
    如果一定要把数值赋予枚举变量,则必须用强制类型转换。
    如:

    a=(enum weekday)2; 
    

    其意义是将顺序号为 2 的枚举元素赋予枚举变量 a,相当于:

    	 a=tue; 
    

    还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

    main()
    { 
    	 enum body 
    	 { a,b,c,d } month[31],j; 
    	 
    	 int i; 
    	 j=a; 
    	 
    	 for(i=1;i<=30;i++)
    	 { 
    		 month[i]=j; 
    		 j++; 
    		 if (j>d) 
    		 	j=a; 
    	 } 
    	 
    	 for(i=1;i<=30;i++)
    	 { 
    		 switch(month[i]) 
    		 { 
    			 case a:printf(" %2d %c\t",i,'a'); break; 
    			 case b:printf(" %2d %c\t",i,'b'); break; 
    			 case c:printf(" %2d %c\t",i,'c'); break; 
    			 case d:printf(" %2d %c\t",i,'d'); break; 
    			 default:break; 
    		 } 
    	 } 
    	 printf("\n"); 
    } 
    

    类型定义符 typedef

    C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,即,允许由用户为数据类型取“别名”。类型定义符 typedef 即可用来完成此功能。
    例如,有整型量 a,b,其说明如下:

     int a,b; 
    

    其中 int 是整型变量的类型说明符。int 的完整写法为 integer,为了增加程序的可读性,可把整型说明符用 typedef 定义为:

    typedef int INTEGER 
    

    这以后就可用 INTEGER 来代替 int 作整型变量的类型说明了。

    //例如: 
     INTEGER a,b; 
    //它等效于: 
     int a,b; 
    

    用 typedef 定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。
    例如:

    typedef char NAME[20]; 
    

    表示 NAME 是字符数组类型,数组长度为 20。然后可用 NAME 说明变量,如:

     NAME a1,a2,s1,s2; 
    

    完全等效于:

     char a1[20],a2[20],s1[20],s2[20]

    又如:

     typedef struct stu 
     { 
    	 char name[20]; 
    	 int age; 
    	 char sex; 
     } STU; 
    

    定义 STU 表示 stu 的结构类型,然后可用 STU 来说明结构变量:

    STU body1,body2; 
    
    typedef 定义的一般形式为:
    typedef 原类型名 新类型名 
    

    其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。
    有时也可用宏定义来代替 typedef 的功能,但是宏定义是由预处理完成的,而 typedef则是在编译时完成的,后者更为灵活方便。

    展开全文
  • 主要介绍了 C语言枚举指针的实例详解的相关资料,希望通过本文大家能够掌握枚举指针的知识,需要的朋友可以参考下
  • 前段时间我们讲完了指针和结构体, 这次我们来讲枚举类型, 什么是枚举呢? 打个比方, 比如我们一个星期有七天, 从周一到周日, 这是固定不变, 不可能无端端的跳出一个星期八出来, 在这种固定的情况下, 我们如果要写一个...

    前言

    前段时间我们讲完了指针和结构体, 这次我们来讲枚举类型, 什么是枚举呢? 打个比方, 比如我们一个星期有七天, 从周一到周日, 这是固定不变, 不可能无端端的跳出一个星期八出来, 在这种固定的情况下, 我们如果要写一个程序去固定这七天, 并且不让别人乱修改, 为了满足这个需求, 枚举就诞生啦.


    开始

    首先我们来看看一个需求, 一年固定有四个季节, 需要用枚举去实现, 那么我们要怎么做呢? 来看看下面这个例子吧:

    #include <stdio.h>
    
    int main()
    {
        enum Season
        {
            spring,
            summer,
            autumn,
            winter
        };
        
        enum Season s = spring;
        
        enum Season b = 1000;   //由于C语言是弱语法, 所以这样子赋值也是可以编译通过的
        
        return 0;
    }

    上面这个例子就是最简单的枚举类型的定义以及使用,  在调用枚举类型的时候, 就只能用里面的四个枚举类型成员.


    PS: 由于C语言是一种弱语法, 没有强硬规定别的值不可以给枚举类型使用, 所以给枚举类型变量随便赋值也是可以的, 但有是优秀的程序员都会严格要求自己去遵循一些书写规范, 希望大家也要严格要求自己.



    补充知识:

    我们说的枚举, 里面定义的几个枚举成员变量, 他们是怎么存储的? 其实他们是以整型常量类型存储的, 让我们来看看输出的结果如何:

    #include <stdio.h>
    
    int main()
    {
        enum Season
        {
            spring,
            summer,
            autumn,
            winter
        };
        
        enum Season s = spring;
        
        printf("spring = %d\n", s);
        
        return 0;
    }


    输出结果:




    那么以此类推

    summer 是1
    autumn 是2
    winter 是3


    那如果我们改掉了其中一个值呢? 让我们来看看例子吧:

    #include <stdio.h>
    
    int main()
    {
        enum Season
        {
            spring = 1,
            summer,
            autumn,
            winter
        };
        
        enum Season a = spring;
        enum Season b = summer;
        enum Season c = autumn;
        enum Season d = winter;
        
        printf("spring = %d\n", a);
        printf("summer = %d\n", b);
        printf("autumn = %d\n", c);
        printf("winter = %d\n", d);
    
        return 0;
    }

    输出结果:




    那如果我不是从头开始改变, 而是从中间某一个开始改呢?

    让我们来继续看看:

    #include <stdio.h>
    
    int main()
    {
        enum Season
        {
            spring = 1,
            summer,
            autumn = 10,
            winter
        };
        
        enum Season a = spring;
        enum Season b = summer;
        enum Season c = autumn;
        enum Season d = winter;
        
        printf("spring = %d\n", a);
        printf("summer = %d\n", b);
        printf("autumn = %d\n", c);
        printf("winter = %d\n", d);
    
        return 0;
    }

    输出的结果:



    由此我们可以看出, 默认是从0~3, 如果从头改掉一个, 那么后面就会逐渐的增加, 如果从中间开始改的话, 那么中间的那个值之后的枚举成员就会跟着那个被改值后继续增加.


    说的有点拗口, 但大家可以根据上面的例子和图来自行理解, 相信大家都懂的.

    展开全文
  • C语言枚举指针

    千次阅读 2015-07-17 15:12:04
    初学C语言, 在努力啃骨头,,,,,读书笔记之枚举指针应用 ...  总结一下, 定义枚举,用typedef enum关键字, 比如 typedef enum{Red,Green,Blue} Color3;  枚举到数值的转换,如果没有指定代表数值就是从0开始算, ...

            初学C语言, 在努力啃骨头,,,,,读书笔记之枚举及指针应用 ...

            总结一下, 定义枚举,用typedef enum关键字, 比如 typedef enum{Red,Green,Blue} Color3;

           枚举到数值的转换,如果没有指定代表数值就是从0开始算, 比如 Color3 c=Red; printf("%d",c);会显示0, 除非指定 如typedef enum{Red=3,Green=5,Blue=10} Color3;


           关于类型指针的定义, 定义的时候在变量名左边加*代表此变量只是一个空指针而已, 若需要赋初始值,只能=0或者=NULL(NULL其实也是0),后面的语句必须要真正赋上新地址或者申请内存才能使用.

          而指针的使用亦非常简单, 比如定义 int   i=10; *pi=0; 定义好的指针pi, 如果后面用pi則表示引用pi这个指针, 若用*pi則表示引用pi指向的具体数值 .比如 :

          int i=10, *pi=0;

          pi= &i ;// &就是取地址

          *pi+=5;

          printf("%d",*pi);  // 15

          printf("%d",i);       //因为pi指向i的地址,*pi变了,i也跟着变, 也是15


         OK, 若指针要申请新内存怎么做呢, 可以用malloc,如:

            #include <malloc.h>

        ...

          int *p=0;

          p=(int*) malloc(sizeof(int)); // 这里为p指针申请一块实际的内存

          *p=12345; //为p所指的内存赋值

          printf("%d",*p);  // 12345

          free(p) ;// 释放内存


      ==============

           OK, 那么指针参数如何传送呢,如下:

             void testP(int *p){

    *p+=100;

    }

          void main(){

                   int i=10;

    testP(&i);

    testP(&i);

    printf("%d", i): //你觉得是多少呢?

    }



           学了几天C语言,觉得它是个非常有趣的东西,真不知道为什么当初那么排斥它, 要不然可能现在偏向做工控方面的工作了....加油吧...


    展开全文
  • 目录 一.基本类型 1.1.整型int 1.2.实型(浮点型) 1.3.字符型char 二.构造类型 2.1.数组类型[] 2.1.1.字符数组 2.1.2.一维数组 ...2.2.结构体类型struct ...2.2.4.指向结构体的指针 2.2.5.指向...
  • C语言枚举

    2014-11-02 19:47:49
    C语言中,除了int,char,指针这些基本类型,还有枚举(enum)这种基本数据类型。当一个变量只可能有几种固定的取值时,可以先定义一个包含这些取值的枚举类型,然后再定义枚举类型变量。 速度,一般会将一些频繁使用...
  • c语言调用枚举类型函数 C语言中的函数调用类型 (Types of Function calls in C) Functions are called by their names, we all know that, then what is this tutorial for? Well if the function does not have ...
  • c语言枚举类型(enum)

    万次阅读 多人点赞 2017-02-23 21:23:13
    enum枚举类型 1 . 如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围。如: 语法: enum 枚举类型{枚举成员...
  • 导出数据类型包括:T*(指针类型),enum(枚举),struct{....}(结构体类型),union{...}(共用体类型),T[...]数组类型,文件类型和函数类型c语言输入输出函数:%d int%ld long int%c char%f flo...
  • C语言枚举类型

    千次阅读 2018-11-08 21:11:21
    C语言中,枚举类型(enumerated type)声明符号名称来表示整形常量。使用enum关键字,可以创建一个新“类型”并指定它可具有的值,如: //创建spectrum作标记名,那enum spectrum作为一个类型名使用 enum ...
  • 摘要:变量的三个基本属性为--作用域、链接属性和存储类型。...在C语言中,仅有4种基本数据类型--整型、浮点型、指针和聚合类型(如:数组和结构体)。所有其他的类型都是从这4种基本类型的某种组合派生而来。
  • c语言:枚举类型

    2019-09-16 21:33:05
    文章目录参考定义格式枚举变量的定义应用 参考 link 定义 C 语言中的一种基本数据类型。 基本类型 整型 短整型(short) ...枚举型(enum) ...构造类型 数组类型 ...指针类型类型(void) 格式...
  • C语言 一级指针与二级指针详细介绍指针的概念指针就是地址, 利用这个地址可以找到指定的数据指针就是地址, 那么在使用的时候, 常常会简单的说 指针变量为指针指针变量就是存储地址的变量int *p1;// 申请了一个变量, ...
  • 接续上篇C语言基础及指针⑧文件IO在上篇中 , 我们初步了解了C语言的IO操作 , 编写IO操作的大致流程:文件IO编写步骤:1.使用fopen函数 , 得到文件指针 2.指定fopen的操作模式r,w (指定输入输出流) 3.创建缓冲...
  • 语言------结构体 枚举学习,有需要的朋友可以参考下。结构体 枚举1.局部变量:>定义.在代码块内部定义的变量都是局部变量,包括形参>作用域.从定义变量的那一行开始,一直到代码块结束>存放位置.存放在栈中&...
  • 详说枚举类型: C语言中的enum 计算机入门时候有点印象: enum是C语言中的一个关键字,enum叫枚举数据类型。 枚举类型(enumerated type)是一种代表整数常量的数据类型。通过关键字enum,可以创建一个新“类型”...
  • C语言- 枚举类型

    2014-01-07 10:42:52
    枚举类型是一种基本数据类型,而不是一种构造类型, 因为它不能再分解为任何基本类型。 枚举类型的定义和枚举变量的说明 一、枚举的定义枚举类型定义的一般形式为:  enum 枚举名  { 枚举值表 ...
  • 目录·C枚举类型基本定义在stm32中的应用·C结构体类型基本定义初始化作为函数参数在stm32中的应用·C共用体类型基本定义内存空间共用 ·C枚举类型 基本定义 首先,在谈enum的用法之前,要了解const的作用,我们知道...
  • 1.结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体,在其他一些高级语言中称为“记录”。structStudent{intnum;char name[20];charsex;intage;floatscore;char addr[30];};声明一个...
  • c语言枚举和数组

    千次阅读 2017-07-18 20:02:52
    1.以下代码定义了这种新的数据类型 - 枚举型 enum DAY {  MON=0, TUE, WED, THU, FRI, SAT, SUN };   (1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。 (2) DAY是...
  • 枚举c语言中的一种数据类型,定义格式为 enum 枚举名{枚举元素1,枚举元素2,......}; 用#define定义一星期七天,就要为每个整数定义一个别名 #define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define ...
  • /*首先要先理解两个类型的区别。先说函数指针:void (*fun)(void); 这个就是一个函数指针了,函数的参数为空void (*fun)(int);...但是可千万别小看这个类型,这个类型可是C语言的精华所在啊,因为它可以...
  • 结构体 共用体 枚举 在实际开发中的应用
  • 并介绍Turbo C新的数据类型:结构、联合和枚举, 其中结构和联合是以前讲过的五种基本数据类型(整型、浮点型、字符型、指针型和无值型)的组合。 枚举是个被命名为整型常数的集合。最后对类型说明(typedef)和预处理指令...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,357
精华内容 9,742
热门标签
关键字:

c语言枚举类型指针

c语言 订阅