0
点赞
收藏
分享

微信扫一扫

计算机科学类专升本复习之“C语言typedef的用法”详解(初稿)

C语言typedef的用法详解

起"别名"的目的不是为了提高程序运行效率,而是为了"编码方便"。

例如有一个结构体的名字是 kangkang,要想定义一个结构体变量就得这样写:

struct kangkang kang1;

struct 看起来就是多余的,但不写又会报错。

如果为 struct kangkang 起了一个别名 KK,书写起来就简单了:

KK kangkang1;

这种写法更加简练,意义也非常明确,不管是在标准头文件中还是以后的编程实践中,都会大量使用这种别名。

使用关键字 typedef 可以为类型起一个新的别名

typedef 的用法一般为:

typedef  oldName  newName;

oldName 是类型原来的名字

newName 是类型新的名字

例如:

typedef int INTEGER;

INTEGER a, b;

a = 1;

b = 2;

INTEGER a, b; "等效于" int a, b;

typedef 还可以给"数组、指针、结构体"等类型定义别名

先来看一个给数组类型定义别名的例子:

typedef char ARRAY20[20];

表示 ARRAY20 是类型char [20]的别名。

它是一个长度为 20 的数组类型。

接着可以用 ARRAY20 定义数组:

ARRAY20 a1, a2, s1, s2;       等价于:  char a1[20], a2[20], s1[20], s2[20];

注意,数组也是有类型的。

例如char a1[20];

定义了一个数组 a1,它的类型就是 char [20]

又如,为结构体类型定义别名:

typedef struct stu{

    char name[20];

    int age;

    char sex;

} STU;

STU 是 struct stu 的别名,可以用 STU 定义结构体变量:

STU body1,body2;       等价于:     struct stu body1, body2;


 

再如,为指针类型定义别名:

typedef int (*PTR_TO_ARR)[4];

表示 PTR_TO_ARR 是类型int * [4]的别名,它是一个二维数组指针类型

接着可以使用 PTR_TO_ARR 定义二维数组指针

PTR_TO_ARR p1, p2;

按照类似的写法,还可以为函数指针类型定义别名:

typedef int (*PTR_TO_FUNC)(int, int);

PTR_TO_FUNC pfunc;

//eg为指针定义别名。

#include <stdio.h>

typedef char (*PTR_TO_ARR)[30];

typedef int (*PTR_TO_FUNC)(int, int);

int max(int a, int b){

    return a>b ? a : b;

}

char str[3][30] = {

    "kangkangshuaishuai",

    "康康很帅",

    "K真的帅"

};

int main(){

    PTR_TO_ARR parr = str;

    PTR_TO_FUNC pfunc = max;

    int i;

   

    printf("max: %d\n", (*pfunc)(10, 20));

    for(i=0; i<3; i++){

        printf("str[%d]: %s\n", i, *(parr+i));

    }

    return 0;

}

结果:

max: 20

str[0]: kangkangshuaishuai

str[1]: 康康很帅

str[2]: K真的帅

举报

相关推荐

0 条评论