第八章宏定义,typedef,结构体,枚举

你好!我是小柒今天和大家学习一下基础C语言的最终章节宏定义,teypedef,结构体,枚举。

宏定义,typedef,结构体,枚举

本节内容

1、宏定义

2、typedef

3、结构体

4、枚举

 

一、宏定义

小柒什么是宏定义?

答:宏定义又称为宏代换、宏替换,简称“宏”,宏定义是C语言提供的预处理功能。

分类:宏定义分为带参数的宏定义和不带参数的宏定义

1)、不带参数的宏定义格式:#define  宏名 字符串
 
        #define Pi 3.1415926
 
把程序中出现的Pi全部换成3.1415926
 
注意:宏定义的名字一般大写,不用在后面加分号
 
示例:圆的面积
#include <stdio.h>

//圆周率

#define pi 3.1415926

int main(int argc, const char * argv[]) {

//    圆的直径

    float d = 5.1;

//    直径乘圆周率

    float Area = pi * d;

    printf("Area = %.2f\n",Area);

    return 0;

}

打印结果:

Area = 16.02

 

2)、带参数的宏定义

格式:#define 宏名 (参数表)字符串    

        #define S(a,b) a*b

示例

#include <stdio.h>

#define S(a,b) a*b

int main(int argc, const char * argv[]) {

    int a = S(3,4);

    printf("a = %d\n",a);

    return 0;

}

打印结果;

a = 12

 

二、typedef

小柒什么是typedef?

答:typedef为现有类型创建一个新的名字,或称为类型别名。

例如:

typedef int a;//给int类型起了一个新的类型名。

a num = 1;  和int num = 1;是一个意思

创建类型别名有个规律,用新的类型名替代用该类型定义变量的变量名。

 

三、结构体

小柒什么是结构体?

答:结构体是一种构造数据类型,用途把不同数据类型合成一个整体,自定义数据类型

1、定义一个结构体类型

struct 结构体名{

  类型说明符 成员名;

  …….;

  类型说明符 成员名;

};//注意此处分号不能少

struct Student{

//    结构体声明时不需要赋值

    int age;

    char *name;

};

 

示例打印姓名,年龄

#include <stdio.h>

struct Student{

//    结构体声明时不需要赋值

    int age;

    char *name;

};

int main(int argc, const char * argv[]) {

//先声明结构体,定义结构体变量并初始化

    struct Student stu = {20,"name"};

//    用打点的方法

    stu.name ="qmy";//

    char *b = stu.name;//

    stu.age = 20;

    int a = stu.age;

    printf("name = %s,age = %d\n",b,a);

    return 0;

}

打印结果:

name = qmy,age = 20

 

第二种格式:

声明结构体时,同时声明一个变量(此时结构体名字可以省略),且初始化(即赋值可选)

struct {

//    结构体声明时不需要赋值

    int age;

    char *name;

}变量名列表;

 

示例

#include <stdio.h>

struct {

//    结构体声明时不需要赋值

    int age;

    char *name;

}stu = {20,"name"};

int main(int argc, const char * argv[]) {

//    用打点的方法

    stu.name ="qmy";//

    char *b = stu.name;//

    stu.age = 20;

    int a = stu.age;

    printf("name = %s,age = %d\n",b,a);

    return 0;

}

打印结果:

name = qmy,age = 20

 

第三种格式:

struct {

//    结构体声明时不需要赋值

    int age;

    char *name;

}变量名;

示例

#include <stdio.h>

 

struct Student{

    

    //    结构体声明时不需要赋值

    

    int age;

    

    char *name;

    

}stu;

 

int main(int argc, const char * argv[]) {

    

    //    用打点的方法

    

    stu.name ="qmy";//

    

    char *b = stu.name;//

    

    stu.age = 20;

    

    int a = stu.age;

    

    printf("name = %s,age = %d\n",b,a);

    

    return 0;

    

}

打印结果:

name = qmy,age = 20

 

四、枚举

小柒什么是枚举? 

答:枚举在C/C++/c#中,是一个被命名的整型常数的集合

 格式:

enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
} 枚举变量;

enum Num{

    x1,

    x2 = 0,

    x3 = 50,

    x4

}x;

小柒提示:枚举的成员用逗号隔开, 最后一个成员可省略

 从第一个标识符开始, 顺次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次
加1的规则确定其值。
则x1=0, x2=0, x3=50, x4=51
 
第二种形式:
如果枚举没有初始化, 即省掉"=整型常数"
 enum Num{x1, x2, x3, x4}x;
 
枚举的用法
例:输入0-6,输出星期数。

#include <stdio.h>

int main(int argc, const char * argv[]) {

    enum Weekday{sun,mon,tue,wed,thu,fri,sat}day;

    int k;

    printf("请输入0-6\n");

    scanf("%d",&k);

    day = (enum Weekday)k;

    switch(day)

    {

        case sun: printf("sunday\n");break;

        case mon: printf("monday\n");break;

        case tue: printf("tuesday\n");break;

        case wed: printf("wednesday\n");break;

        case thu: printf("thursday\n");break;

        case fri: printf("friday\n");break;

        case sat: printf("satday\n");break;

        default: printf("输入错误\n");break;

    }

    

    return 0;

    

}

打印结果:

请输入0-6

0

sunday

 

 到现在为止基础C已经讲完了,小柒很感谢你们的陪伴,接下来我们就要开始学习iOS重要的编程Objective-C,希望大家好好准备,为努力的自己加油!

posted on 2015-12-27 16:49  xxQMYxx  阅读(284)  评论(0编辑  收藏  举报

导航