百度
360搜索
搜狗搜索

c typedef,在C语言中typedef是什么意思?干什么用的?详细介绍

本文目录一览: c语言中typedef是什么意思?

typedef struct是定义一个标识符及关键字的别名,无具体含义。
它是语言编译过程的一部分,为了使用结构体方便。
如:
typedef int INTEGER;
下面两行等价
int i;
INTEGER i;
可以声明结构体类型:
typedef struct
{
int age;
int score;
}STUDENT;
定义变量:
只能写成 STUDENT stu;
如果写成
typedef struct student
{
int age;
int score;
}STUDENT;
下面三行等价:
STUDENT stu;
struct student stu;
student stu;
在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间。
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
扩展资料:
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。
如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法。
使用typedef为现有类型创建别名,定义易于记忆的类型名。
typedef 还可以掩饰复合类型,如指针和数组。
参考资料:
百度百科-typedef

C语言中的typedef是什么意思啊

类型定义。
它就和define相对应,define是把一个自己起的名字的常量定义为代替它的另一个常量来同。
typedef是把一个自己起的名字的类型用已经有的类型代替使用,如:typedef int Type1;之后如果有Type1 i ;系统则理解为int i;。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
扩展资料
define被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
宏定义的作用范围仅限于当前文件,即file1.c中定义 #define PI 3.14,在file2.c中该宏定义不起作用;通过将#define PI 3.14定义在common.h中,file1.c和file2.c分别#include "common.h"的方式,该宏定义在file1.c和file2.c中都起作用。
在C或C++语言中,“宏”分为有参数和无参数两种。
#define GPEBLT_FUNCNAME(basename) (SCODE (GPE::*)(struct GPEBltParms *))&GPE::##basename
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符串。
输出为:token 9 = 10
详见百科typedef(相似)。
参考资料来源:百度百科-define
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
使用方法如下:
1、定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb。
2、用在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名 对象名。
3、用typedef来定义与平台无关的类型。比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:typedef long double REAL。
扩展资料:
1、typedef可以声明各种类型名,但不能用来定义变量。用typedef可以声明数组类型、字符串类型,使用比较方便。
2、用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
3、当在不同源文件中用到同一类型数据(尤其是像数组、指针、结构体、共用体等类型数据)时,常用typedef声明一些数据类型,把它们单独放在一个头文件中,然后在需要用到它们的文件中用#include命令把它们包含进来,以提高编程效率。
4、使用typedef有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef便于移植。
5、使用typedef增加类型名时,原则上没有个数限制。
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。
它的作用是为一种数据类型定义一个新名字,比如,typedef int INTERGER 相当于用INTERGER来代表int类型; 或 typedef float REAL 用REAL来代表float。需要注意的是,为了“见名知意”,请尽量使用含义明确的标识符,并且尽量大写。
扩展资料
typedef 有另外一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度:
typedef long double REAL;
在不支持 long double 的机器上,该 typedef 看起来会是下面这样:
typedef double REAL;
并且,在连 double 都不支持的机器上,该 typedef 看起来会是这样:
typedef float REAL;
你不用对源代码做任何修改,便可以在每一种平台上编译这个使用 REAL 类型的应用程序。唯一要改的是 typedef 本身。
在大多数情况下,甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗? 标准库广泛地使用 typedef 来创建这样的平台无关类型:size_t,ptrdiff 和 fpos_t 就是其中的例子。
此外,象 std::string 和 std::ofstream 这样的 typedef 还隐藏了长长的,难以理解的模板特化语法,例如:basic_string,allocator> 和 basic_ofstream>。
参考资料来源:百度百科-tpedef的平台开发
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。typedef 行为有点像 #define 宏,用其实际类型替代同义字。
不同点是 typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。一般使用typedef的目的主要有两个,其一是为了让自己在后续编程时方便记住变量的名字,其二是为了简化一些变量名称较长的名字。
扩展资料:
c语言中typedef的几种用法:
1、常规变量类型定义
例如:typedef unsigned char uchar
描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明
2、数组类型定义
例如: typedef int array[2];
描述: array等价于 int [2]定义; array a声明等价于int a[2]声明。
扩展: typedef int array[M][N];
描述: array等价于 int [M][N]定义; array a声明等价于int a[M][N]声明。
3、函数地址说明
描述:C把函数名字当做函数的首地址来对待,可以使用最简单的方法得到函数地址。
例如: 函数:int func(void); unsigned long funcAddr=(unsigned long)func, funcAddr的值是func函数的首地址。
参考资料:百度百科-typedef
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
typedef本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。
扩展资料:
typedef的用法:
1、常规变量类型定义
例如:typedef unsigned char uchar
描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明。
2、数组类型定义
例如: typedef int array[2];
描述: array等价于 int [2]定义; array a声明等价于int a[2]声明。
扩展: typedef int array[M][N];
描述: array等价于 int [M][N]定义; array a声明等价于int a[M][N]声明。
3、指针类型定义
例如: typedef int *pointer;
描述: pointer等价于 int *定义;pointer p声明等价于int *a声明。
例如: typedef int *pointer[M];
描述: pointer等价于 int *[M]定义 pointer p声明等价于int *a[M]声明明。
4、函数地址说明
描述:C把函数名字当做函数的首地址来对待,我们可以使用最简单的方法得到函数地址 。
例如: 函数:int func(void); unsigned long funcAddr=(unsigned long)func, funcAddr的值是func函数的首地址。
参考资料来源:百度百科—typedef
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
扩展资料:
C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。
一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。
例如,C 语言在 C99 之前并未提供布尔类型,但可以使用 typedef 关键字来定义一个简单的布尔类型。
参考资料来源:百度百科—typedef

阅读更多 >>>  java编程计算n的阶乘,Java 编写一个方法,求一个数的阶乘。 n!=1×2×3×...×n,比如3!=123=6?

求解答c语言结构体定义中typedef的作用

c语言结构体定义中typedef的作用是为一种数据结构体定义一个新名字。
在c语言中使用typedef帮助定义结构体,对于声明结构体变量,便可以直接使用typedef xxx(结构体名 对象名)的形式,而没必要带上struct关键词。实际项目C代码中,结构体的定义一般都使用了typedef,在大量使用结构体变量的场合,这样会省事很多。
扩展资料:
在编程中typedef能够给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。typedef和#define不同,它不是简单的文本替换。如果定义中包含表达式,必须使用括号。
typedef符合范围规则,使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。与auto、extern、mutable、static、register等关键字不能出现在同一个结构体定义中。

在C语言中typedef是什么意思?干什么用的?

声明新的类型名来代替原有的类型名
比如,typedef int INTERGER; 或 typedef float REAL;
相当于用INTERGER来代表int类型,用REAL来代表float
习惯上把用typedef声明的类型用大写字母表示
自定义数据类型
经常用来将结构定义成一个数据类型~如:
typedef struct student{
char name[10];
char kemu[10];
double mark;
}student;
这样就可以直接定义数据
student stu;
stu.name = '张三';
stu.kemu = '语文';
stu.mark = 97.5;
定义一种新的数据类型,这种类型又可以用来声明属于该类型的变量,大多数情况typedef用来定义一种结构体,因为原有数据类型不够用了。
上一节,我们学习了C语言中常量的使用,这一节,我们学习C语言中的typedef关键字。喜欢的话可以点个赞,也欢迎关注我的往期视频,C语言入门,从开发环境开始。
typedef是C/C++常用语法,typedef作用,归结起来,可以分为四种:
1、定义一种类型名
常规的应用中,想要定义两个字符指针,写下如下代码: char *a, b
(1)char* a,b;
(2)char c='m';
(3)a=&c;
(4)b=&c;
上述代码是错误的,只有a为字符指针,b仍旧为字符变量。通过#define进行宏定义,仍然是无效的,因为宏定义仅仅是字符替换。
以下则可行:
(1)typedef char* PCHAR;
(2)PCHAR pa, pb;
2、用于struct结构体
(1)#include

(2)struct tagPOINT1

(3) {

(4)int x;

(5)int y;

(6)};

(7)int main()

(8){

(9)tagPOINT1 p1,p2;//此句编译无法通过

(10)//错误信息:error: unknown type name 'tagPOINT1'

(11) //环境:Gcc 4.8.1

(12)}

必须采用如下定义;

(1)struct tagPOINT1 p1,p2;//必须有关键字 struct

(2)采用typedef,则可以省掉结构体定义时的struct

(3)ypedef struct tagPOINT

(4){

(5)int x;

(6)int y;

(7)}POINT;

(8)POINT p1; // 这样就比原来的方式少写了一个struct。

3、跨平台移植

程序编写中,如果考虑到平台移植的因素,则需要从代码中抽象出硬件层的差异,例如,变量所占空间,端模式等等。

考虑一个浮点型变量,在不同的硬件平台上,所占据的空间有可能不同,此时,可以采用typedef将其定义到单独的头文件内,该头文件是纯粹抽象硬件相关的内容:

(1)typedef float REAL;

(2)typedef short int INT16;

(3)typedef int INT32

(4)...

这样的话,如果将来考虑到程序的移植,只需要修改该头文件即可。

4、为复杂的声明取别名

复杂的声明形如:void (*b[10]) (void (*)());

意思:首先*b[10]为指针数组,它里面的十个元素全是指针。到底是什么指针呢,是一个返回类型为空,形参为空的函数指针。

这种复杂的声明,可以用typedef进行简化:

首先:声明后面的函数指针:

(1)typedef void (pFunParam *)();

接着声明前面的指针数组:

(1)typedef void (*pFunx)(pFunParam);

原声明的最简化版:

pFunx b[10];

本文档在撰写过程中,参考了网络博客typedef用法

里面提到一个复杂的声明:

(1)doube(*)() (*e)[9];

而然这个声明在gcc下编译时不通过的,按照作者的本意,似乎应该这样声明:

(1)double (*(*e)[9])();

e是一个指向9维数组的指针,数组内为函数指针,该函数指针形参为空,返回类型为double。

这样的话,应该采用这样的typedef来简化声明:

typedef (*(*ptr)[9])();

扩展资料

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

参考资料来源:百度百科-typedef

求解答c语言结构体定义中typedef的作用

C里面在定义结构体类型的变量时要有struct关键字,如果按照你下面的写法就必须写成:
struct
MyStruct
a;
但是使用typedef则是为结构体类型给了一个新名字,按原先上面的写法就直接写成:
MyStruct
a;
写成下面的是简单,但是定义一个结构体变量的时候呢就麻烦了。
要写成struct
MyStruct
ms;这样定义。
而上面的有typedef的则不要,直接写MyStruct
ms;这样
即typedef
struct
tagMyStruct
MyStruct;后,原先定义结构体变量需要
struct
tagMyStruct
ms;
现在只要写成MyStruct
ms了。
定义typedef
struct
tagMyStruct后
之后定义变量可以直接用
tagMyStruct
*p来定义
但是struct
MyStruct,之后只能用struct
MyStruct
*p来定义
加上typedef意为标签式定义,在结构体定义之后,在定义类型时直接可以用结构体的名字去定义对象。而不加上typedef的话为类型名定义,也就要求之后再定义对象时需要加上
struct
MyStruct
才可以进行对象定义。

typedef在c语言的用法

C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。
起别名的目的不是为了提高程序运行效率,而是为了编码方便。例如有一个结构体的名字是 stu,要想定义一个结构体变量就得这样写:struct stu stu1;
struct 看起来就是多余的,但不写又会报错。如果为 struct stu 起了一个别名 STU,书写起来就简单了:STU stu1;
这种写法更加简练,意义也非常明确,不管是在标准头文件中还是以后的编程实践中,都会大量使用这种别名。
使用关键字?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],这一点已在VIP教程《数组和指针绝不等价,数组是另外一种类型》中讲解过。
又如,为结构体类型定义别名:
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;
【示例】为指针定义别名。#include

阅读更多 >>>  int函数python,Python中int最大能转换多少(python int多少位)

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] = {

"http://c.biancheng.net",

"C语言中文网",

"C-Language"

};

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]: http://c.biancheng.net

str[1]: C语言中文网

str[2]: C-Language

需要强调的是,typedef 是赋予现有类型一个新的名字,而不是创建新的类型。为了“见名知意”,请尽量使用含义明确的标识符,并且尽量大写。typedef 和 #define 的区别

typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不能再往里面增加别的东西。

1) 可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。如下所示:#define INTERGE int

unsigned INTERGE n; ?//没问题

typedef int INTERGE;

unsigned INTERGE n; ?//错误,不能在 INTERGE 前面添加 unsigned

2) 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define

c语言中typedef的作用范围

  使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内。但是想在其他文件里也使用typedef定义的变量类型,常把typedef声明单独放一个文件里(导入头文件),在用的时候用#include命令把这个文件导进来。
  typedef的作用是,声明新的类型名来代替原有的类型名。比如,typedef
int
INTERGER;

typedef
float
REAL;相当于用INTERGER来代表int类型,用REAL来代表float。
  C语言中习惯上把用typedef声明的类型用大写字母表示。

C语言typedef定义结构体数组,下面这段代码是什么意思?

首先注意,C语言中表示类型的关键字struct不可省略(C++中可以),否则结构体名本身不会被作为一个类型名。
其次,typedef的语法是:
typedef 类型 类型别名;
这里的类型可以是一个结构体类型的定义。
在C语言中,这类typedef有着简化结构体类型名的作用。之后引用这个结构体类型名,不需要重复输入struct。
如果直接用结构体类型名定义变量,之后再引用结构体类型名时,还是比较麻烦。所以,一般先typedef定义一个类型别名,有需要时再利用这个类型别名定义变量。
下面的定义:
typedef struct vexnode
{
int vertex;
arcnode* firstarc;
}adjlist[Vnum];
含义是:定义一个类型别名adjlist,这个类型是一个结构体类型为元素类型的长度为Vnum的数组,这个结构体类型的元素是int vertex和arcnode* firstarc。
如果这样写:
struct vexnode
{
int vertex;
arcnode* firstarc;
}adjlist[Vnum];
,那么adjlist就不是类型名,而是数组变量名。
====
[原创回答团]
typedef是类型定义啊,vexnode可以作为一个类型来使用
把结构体当类来使用了
你的代码呢?
含义是:定义一个类型别名adjlist,这个类型是一个结构体类型为元素类型的长度为Vnum的数组,这个结构体类型的元素是int vertex和arcnode* firstarc。操作方法如下:
1、首先在电脑中,打开Microsoft Visual Studio软件。
2、接着新建C++ 控制台工程,命名为Test工程。
3、理解typedef struct 的用法:在C中定义一个结构体类型时,用typedef struct 定义Student_Str结构体,成员包含名字和年龄,这样就可以直接使用Student进行变量的定义了。
4、编写代码,使用typedef struct 定义,并定义两个结构体。
5、最后运行程序并输出结果,如下图所示,就完成了。

c语言typedef的作用是什么,我没用过。我只会define。

用途一:
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,
// 和一个字符变量;
以下则可行:
typedef char* PCHAR; // 一般用大写
PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针
虽然:
char *pa, *pb;
也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。
用途二:
用在旧的C代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名对象名,如:
struct tagPOINT1
{
int x;
int y;
};
struct tagPOINT1 p1;
而在C++中,则可以直接写:结构名对象名,即:
tagPOINT1 p1;
估计某人觉得经常多写一个struct太麻烦了,于是就发明了:
typedef struct tagPOINT
{
int x;
int y;
}POINT;
POINT p1; // 这样就比原来的方式少写了一个struct,比较省事,尤其在大量使用的时候
或许,在C++中,typedef的这种用途二不是很大,但是理解了它,对掌握以前的旧代码还是有帮助的,毕竟我们在项目中有可能会遇到较早些年代遗留下来的代码。
用途三:
用typedef来定义与平台无关的类型。
比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:
typedef long double REAL;
在不支持 long double 的平台二上,改为:
typedef double REAL;
在连 double 都不支持的平台三上,改为:
typedef float REAL;
也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。
标准库就广泛使用了这个技巧,比如size_t。
另外,因为typedef是定义了一种类型的新别名,不是简单的字符串替换,所以它比宏来得稳健(虽然用宏有时也可以完成以上的用途)。
用途四:
为复杂的声明定义一个新的简单的别名。方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版。举例:
1. 原声明:int *(*a[5])(int, char*);
变量名为a,直接用一个新别名pFun替换a就可以了:
typedef int *(*pFun)(int, char*);
原声明的最简化版:
pFun a[5];
2. 原声明:void (*b[10]) (void (*)());
变量名为b,先替换右边部分括号里的,pFunParam为别名一:
typedef void (*pFunParam)();
再替换左边的变量b,pFunx为别名二:
typedef void (*pFunx)(pFunParam);
原声明的最简化版:
pFunx b[10];
3. 原声明:doube(*)() (*e)[9];
变量名为e,先替换左边部分,pFuny为别名一:
typedef double(*pFuny)();
再替换右边的变量e,pFunParamy为别名二
typedef pFuny (*pFunParamy)[9];
原声明的最简化版:
pFunParamy e;
理解复杂声明可用的“右左法则”:从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。举例:
int (*func)(int *p);
首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;然后跳出这个圆括号,先看右边,又遇到圆括号,这说明(*func)是一个函数,所以func是一个指向这类函数的指针,即函数指针,这类函数具有int*类型的形参,返回值类型是int。
int (*func[5])(int *);
func右边是一个[]运算符,说明func是具有5个元素的数组;func的左边有一个*,说明func的元素是指针(注意这里的*不是修饰func,而是修饰func[5]的,原因是[]运算符优先级比*高,func先跟[]结合)。跳出这个括号,看右边,又遇到圆括号,说明func数组的元素是函数类型的指针,它指向的函数具有int*类型的形参,返回值类型为int。
也可以记住2个模式:
type (*)(....)函数指针
type (*)[]数组指针
http://wenku.baidu.com/view/d00892d9a58da0116c17492f.html
你也可以看看这个百度文库的知识

阅读更多 >>>  常用sql语句查询大全,写出下列SQL语句,简单的表查询语句

c语言中为什么要用到typedef

typedef 声明,简称 typedef,为现有类型创建一个新的名字。
typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如:
typedef int size;
此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size,这时size就等同于int。
详细的可以看一下百度百科里对typedef的说明,很详尽的。参考资料:http://baike.baidu.com/view/1283800.htm
别名,方便,有时候更便于理解

网站数据信息

"c typedef,在C语言中typedef是什么意思?干什么用的?"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:c typedef,在C语言中typedef是什么意思?干什么用的?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!