关于typedef声明新类型名

typedef作用是用简单的类型名代替复杂的类型名,这样易于理解,方便表示。如

  typedef int Integer 指定Integer为类型名,作用于int 相同

  Integer i 与 int i 等价。

复杂点的情况是定义函数指针,如

  typedef void (*fun)(void)

表示用户自己定义了一个函数指针数据类型,fun ptr,即定义了一个函数指针ptr,可将函数地址赋给该指针,如

  ptr=File; (File为一函数,函数名即地址,File()的入口地址赋给ptr,以后就可以用ptr来调用该函数)

   ptr();

或  (*ptr)(); // 调用函数File()

代码测试:

#include<iostream>
using namespace std;

void test(){
cout<<"test1\n"<<endl;
}

void main (){

typedef void (*fun)();
fun ptr;
ptr = test;
ptr();
//(*ptr)();
}

关于typedef声明新类型名

时间: 2024-08-20 07:29:38

关于typedef声明新类型名的相关文章

C++ 声明新类型 typedef

在C++中,除了可以声明结构体.共用体.枚举等类型外,还可以用typedef声明一个新的类型名来代替已有的类型如: typedef int INTEGER;  //指定用标识符INTEGER代表int类型 typedef float REAL;  //指定用REAL代表float类型 这样,以下两行等价: int i,j; float a,b; INTEGER i,j; REAL a,b; 这样可以使熟悉FORTRAN的人能用INTEGER和REAL定义变量,以适应他们的习惯. 如果在一个程序中

#define与typedef定义的类型名的区别

1.可以用其他类型说明符对#define定义的类型名进行扩展,但对typedef所定义的类型名不能这样做. 例如: #define peach int unsigned peach i; //加上unsigned类型说明符,正确! typedef int banana; unsigned banana i; //加上unsigned类型说明符,错误! 2.在连续的变量声明中,用typedef定义的类型能够保证声明中的所有变量均为同一种类型,而用#define定义的类型则无法保证. 例如: #de

typedef声明变量也是一种求值过程

前言: 什么叫做:声明变量是求值过程?请看下面的声明, int i; 很简单,声明了个整型变量i,再看如下声明, int *p; 也很简单,立刻反应出来它是指向整型的指针,但是具体如何推倒出来的呢?其实在C语言中,变量的声明就是一种求值过程,把*p这部分声明看成表达式,对这个表达式的求值的结果是int类型,这样就可以倒推出p是指针整型的指针了,因为只有对指向整型的指针进行解引用操作才是整型类型!还有很多复杂的声明,都可以使用这种方法求其具体的类型. 下面让我们来验证typedef定义的新类型和普

typedef与define宏定义用于声明新的类型之间的区别

摘自<c专家编程> typedef可以看成一种彻底的封装类型,在typedef声明类型之后不能再往里面增加其他的内容. 例子: #define peach int unsigned peach i; //没问题 typedef int banana; unsigned banana i; //错误,不能增加unsigned #define宏定义只是用于简单的替换 #define int_ptr int * int_ptr chalk, cheese; int * chalk, cheese;

typedef如何显示变量类型名

dsa typedef unsigned long int NUM; typedef unsigned short int Data; //为已经存在的类型起一个别名 //1.定义一个变量 unsigned long int NUM //2.加typedef unsigned long int NUM; //3.NUM 成为一个新类型名称 // 补码,递归,逻辑 //数组-排序,二维数组地图 //指针- 外挂 //字符串,结构体,内存四区,文件 void main() { unsigned lo

C语言--enum,typedef enum 枚举类型详解

原文:http://z515256164.blog.163.com/blog/static/32443029201192182854300/ 有改动 C语言详解 - 枚举类型 注:以下全部代码的执行环境为VC++ 6.0 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6

C编译器剖析_4.4 语义检查_外部声明_类型结构的构建(2)

在这一小节中,我们将对形如第3章图3.3.17所示的结构体语法树进行语义检查,从而构建结构体的类型结构. 图3.3.17 ParseStructOrUnionSpecifier()构建的语法树 我们在第2章中给出了以下结构体struct Data对应的类型结构,如图2.4.4所示.为了阅读方便,我们重新给出这2幅图,由图示我们也能较清楚地预览本节的起点和终点. struct Data{ int abc:8; int def:24; double f; } dt; 图2.4.4   结构体的类型结

C的typedef声明与#预处理指令

1 typedef:给已有的类型声明新的名称,并不能创建新的数据类型: 1.1 typedef 声明 typedef unsigned char BYTE ; /* 将 unsigned char 重新命名为BYTE ;*/ typedef char * STRING ; /*将 char * 声明为STRING */ 1.2 typedef与#define typedef char * STRING; STRING name, course; //等价于 char * name , * cou

C++(Typedef声明)

typedef 声明: 使用 typedef 为一个已有的类型取一个新的名字.下面是使用 typedef 定义一个新类型的语法: typedef type newname; 例如,下面的语句会告诉编译器,feet 是 int 的另一个名称: typedef int feet; 现在,下面的声明是完全合法的,它创建了一个整型变量 distance: feet distance;