(三)c语言之typedef 与 struct详细用法

typedef用法

 typedef作用:为一种数据类型取一个别名 (简化复杂的类型声明)

typedef int t1; 
typedef char t2; 

int main()
{
        t1 a = 88; 
        t2 b = 'p';
        printf("a=%d  b=%c
", a, b); 
}

  

struct用法

struct Node: 代表结构体的一种数据类型

// 定义结构体的同时定义变量t1
struct Node
{
        int data;
        char *p;
} t1;
t1.data; // 使用
// t1是变量

// 定义结构体之后再定义变量t1
struct Node
{
        int data;
        char *p;
};
struct Node t1; // 使用前定义
struct Node t2;
t1.data;  // 使用
t2->p;


// 定义结构体,但不定义结构体名字Node
struct
{
        int data;
        char *p;
}t1, t2;
// 只需要t1 t2两个变量,后面不需要用结构体名定义其它变量时可以这样操作,但是后面没法定义新的变量
t1.data;
t2->p;

typedef 与 struct结构体

typedef 给结构体定义 别名

// typedef 定义struct Node 结构体类型
typedef struct Node
{
        int data;
        char *p;
} t1;

// 此时t1是结构体类型, 类似于int , char
// typedef给struct Node取的别名t1,
t1 stu;  // t1是结构体类型,使用前先定义一个变量stu
stu.a;

  

注:

  struct data {} t1;  // t1是变量

  typedef struct data {} t1;  // t1是结构体类型

typedef 与 函数指针

typedef  char (*Func) (int, int)

typedef 定义了Func类型, Func类型为指向某种函数的指针,这种函数以char为返回值,int为参数

用法: 返回类型 (*新类型) (参数表)

#include <iostream>
#include <string>
using namespace std;

int GetMax(int a, int b)
{
        return a > b ? a : b;
}

// 两种写法
typedef int (FuncA) (int, int);
typedef int (*FuncB) (int, int);

int main()
{
        FuncA * a = GetMax;
        FuncB b = GetMax; 

        int Ta = a(66, 21);
        cout<<Ta<<endl;

        int Tb = b(28, 86);
        cout<<Tb<<endl;
        return 0;
}

  

做一个优秀的程序媛
原文地址:https://www.cnblogs.com/oytt/p/13600065.html