精华内容
下载资源
问答
  • 原文地址:http://blog.csdn.net/baoendemao/article/details/41209697 原文地址:... typedef int(FUNC1)(int in); ...typedef int(FUNC2)(int *,int *,int *); 上面的语句作用是 作一个函数声明

    原文地址:http://blog.csdn.net/baoendemao/article/details/41209697

    原文地址:http://www.educity.cn/wenda/295697.html


    typedef int(FUNC1)(int in);
    typedef int(FUNC2)(int *,int *,int *);

    上面的语句作用是 作一个函数声明类型.

    如:FUNC1 A;

    等价于声明一个函数:int a(int in);

    同理

    FUNC2 b;

    等价于声明一个函数:int b(int *,int *,int*);

    值得注意的是参数匹配:参数个数,参数类型 

    ---------------------------------------------------------------------------------------------------------------------------------------------

    先看一下例子:

    #include "iostream"

    using namespace std;

    int add(int a,int b){
    return (a+b);
    }

    typedef int (* func)(int ,int ) ;

    void main(){
    func f = add;
    int n = f(1,2);
    cout << n << endl;
    }

    其中 typedef int (* func)(int ,int ) 比较难理解,因为我们知道typedef 是宏定义,一般的语法是这样:

    typedef unsigned long ulong;

    这个定义是用ulong作unsigned long 的别名

    在这里的意思是定义一种指针类型lpAddFun,它是一种指向函数int (int,int)的指针,也就是说lpAddFun表示的是这种类型的函数的地址,因为:

    函数名不是其类型的一部分函数的类型只由它的返回值和参数表决定.指向add()的指针必须指向与add()相同类型的函数带有相同的返回类型和相同的参数表   。

    int (* func)(int ,int )和int* func(int ,int )是不同的,后者说明的是返回一个int类型的指针,所以括号是必须加的

    例题:

    #include<stdio.h>
    int inc(int a)
    {
    return(++a);
    }


    int multi(int*a,int*b,int*c)
    {
    return(*c=*a**b);
    }


    typedef int(FUNC1)(int);
    typedef int(FUNC2) (int*,int*,int*);

    void show(FUNC2 fun,int arg1, int *arg2)
    {
    //fun 为指向函数int multi(int*a,int*b,int*c)的指针
    //arg1 = 10,arg2 =&a;

     FUNC1 *p = &inc;         //p为指向函数inc的指针
    int temp =p(arg1);                //等价于 temp = inc(arg1) = inc(10) = 11
    fun(&temp,&arg1, arg2);  

    //运行fun()函数后,*arg2 = temp * arg1 = 11 * 10 = 110

    printf("%d\n",*arg2);
    }

    int main()
    {
    int a;
    show(multi,10,&a);
    return 0;
    }

    结果:110


    展开全文
  • typedef int ElemType

    千次阅读 多人点赞 2012-11-28 10:57:15
    typedef int ElemType; 为什么呀,我倒是知道后面用ElemType定义别的数据类型,看起来是把ElemType和int一样啦,那直接用int不用行了,为什么要用ElemType.这是定义一个线性表元素类型的 最佳答案 ...

    1   typedef int ElemType;

    为什么呀,我倒是知道后面用ElemType定义别的数据类型,看起来是把ElemType和int一样啦,那直接用int不用行了,为什么要用ElemType.这是定义一个线性表元素类型的

    最佳答案

    定义不同的数据类型名称是为了程序的可读性.

    而且一旦你需要将类型变换比如使用double型的了,只要写:

    typedef double ElemType;

    一下子就全改了,如果没有定义的话就要一个个的把int改成double,你不嫌麻烦么

     

    2      typedef int(*CallBack)(char *p);这个太难理解了,怎么理解呢?

    typedef int a

    这个我就知道是什么意思,就是把a还代替int,请问

    typedef int(*CallBack)(char *p),

    这个又是什么意思呢?

    typedef int(*CallBack)(char *p);

    变量名:CallBack

    1.*CallBack:CallBack是一个指针

    2.(*CallBack)():指向一个函数

    3.(*CallBack)(char *p):这个函数有一个参数,类型为char*

    4.int(*CallBack)(char *p):这个函数有一个返回值,类型为int

    最终:CallBack是一个指针,指向具有一个char*类型参数,且返回一个int型数据的函数

    前面有个typedef,所以现在CallBack是这种类型的别名

    int func(char *p){

    ...

    }

    ...

    CallBack my_callback1 = func;//OK

    CallBack my_callback2 = &func;//OK

    以上二者均可

    展开全文
  • (可能有错误的理解,请大家指出* =*) 1) #define a int[10] (全错,直接文本替换) A) a[10] a[10];  B) a[10] a; C) int a[10]; D) int a; E) a b[10]; F) a b; ...2) typedef in

    (可能有错误的理解,请大家指出* =*)

    1)  #define a int[10]   (全错,直接文本替换)



    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];
    D)   int a;
    E)   a b[10];
    F)   a b;
    G)   a* b[10];
    H)   a* b;


    2)  typedef int a[10];(a为定义一个int型大小为10的数组)


    A)   a[10] a[10];//错
    B)   a[10] a;//错
    C)   int a[10];//对,a是数组名,定义一个数组
    D)   int a;//对,定义一个变量a
    E)   a b[10];//对,定义一个二维数组b[10][10]
    F)   a b;//对,定义一个数组b[10]
    G)   a* b[10];//对,定义一个指向二维数组的指针b
    H)   a* b;//对,定义一个指向一维数组的指针b


    3)  #define a int*[10]   (全错,直接文本替换)


    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];
    D)   int a;
    E)   a b[10];
    F)   a b;
    G)   a* b[10];
    H)   a* b;


    4) typedef int* a[10];   (a的功能:定义一个大小为10指针数组)


    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];  //对,a是数组名,定义一个数组
    D)   int a;//对,定义一个变量a
    E)   a b[10];//对,定义一个指向二维数组的指针b
    F)   a b;//对,定义一个指针数组b[10]
    G)   a* b[10];对,定义一个指向二维数组的二级指针b
    H)   a* b;对,定义一个指向二维数组的二级指针b




    5)  #define a int*[10]   (全错,直接文本替换)


    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];
    D)   int a;
    E)   a b[10];
    F)   a b;
    G)   a* b[10];
    H)   a* b;


    6)  typedef int (*a)[10]   (a的功能:定义一个指向大小为10的数组的指针)


    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];//对,a是数组名,定义一个数组
    D)   int a;//对,定义一个变量a
    E)   a b[10];//对,定义一个指向二维数组的指针
    F)   a b;//定义一个指向大小为10的数组的指针
    G)   a* b[10];//对,定义一个指向(指向二维数组的)指针的指针,即二级指针
    H)   a* b;//定义一个指向(指向大小为10的数组的)指针的指针


    7)  #define *a  * int[10] (全错,直接文本替换)
    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];
    D)   int a;
    E)   a b[10];
    F)   a b;
    G)   a* b[10];
    H)   a* b;


    8)   typedef int * (*a)[10] (a的功能:定义一个指向大小为10的指针数组的指针)
    A)   a[10] a[10]; 
    B)   a[10] a;
    C)   int a[10];//对,a是数组名,定义一个数组
    D)   int a;//对,定义一个变量a
    E)   a b[10];对,定义一个指向二维指针数组的指针
    F)   a b;//定义一个指向大小为10的指针数组的指针
    G)   a* b[10];//定义一个指向(指向二维指针数组的)指针的指针
    H)   a* b;定义一个指向(指向大小为10的指针数组的)指针的指针
    展开全文
  • typedef int(*P)(int )

    2020-09-16 10:46:25
    typedef int(*P)(int ) typedef 主要的作用是给变量取别名,但是存在一些比较特殊的用法。可用于通过给函数起别名的方式定义回调函数。 typedef int(*P)(int ) 这里相当于是给函数指针 P 起了个别名。那么可以用 P ...

    typedef int(*P)(int )

    typedef 主要的作用是给变量取别名,但是存在一些比较特殊的用法。可用于通过给函数起别名的方式定义回调函数。
    typedef int(*P)(int ) 这里相当于是给函数指针 P 起了个别名。那么可以用 P 来定义或转换其他指针的类型。

    存在一个这样的函数:

    int add(int x)
    {
    	return x+1;
    }
    
    P f=add; //用P类型 定义一个f, f就可以接收此种函数形式的函数名,f(5); //然后可以用f调用这个add()函数。
    
    展开全文
  • typedef int status

    千次阅读 2013-09-30 11:25:00
    是个自定义类型的语句,typedef用来定义类型的别名,statusi就相当于inti 转载于:https://www.cnblogs.com/seasonsstory/p/3347011.html
  • typedef int (* func)(int ,int )

    千次阅读 2014-11-17 15:10:46
    先看一下例子: #include "iostream" using namespace std; int add(int a,int b){ return (a+b);...typedef int (* func)(int ,int ) ; void main(){ func f = add; int n = f(1,2); cout }
  • typedef int(FUNC1) (int in)

    千次阅读 2018-07-20 14:29:59
    首先看一个例子: #include &lt;stdio.h&gt; int inc(int a) { return (++a); } int multi(int *a,int *b,int *c) ...typedef int (FUNC1) (int );...typedef int (FUNC2) (int *, i...
  • 关于typedef int (*pFunc)(int, int)

    千次阅读 2013-08-15 22:32:25
    typedef int (*pFunc)(int, int) 申明一个指针变量pFunc, 指向int (*)(int, int) 从而可以 pFunc func; int add(int a,int b){ return (a+b); } typedef int (* func)(int ,int ) ; void main(){ ...
  • typedef int ElemType的理解

    千次阅读 2020-03-11 18:51:18
    typedef int ElemType; 为什么呀,我倒是知道后面用ElemType定义别的数据类型,看起来是把ElemType和int一样啦,那直接用int不用行了,为什么要用ElemType.这是定义一个线性表元素类型的 最佳...
  • typedef int (*funp_t)(int)定义一个函数指针类型 funp_t; 而typedef int (fun_t)(int)定义一个函数类型 fun_t; funp_t p; // 定义一个类型是 int ( *) ( int ) 的变量p,即:函数指针p fun_t p; // 声明...
  • 1,typedef void fun(int)类型 声明:typedef void alias(int) , 定义函数 void fun(int a){ ptintf("%d = a\n",a);} 这是可以可以这样用,alias * a = fun; 调用 #include typedef void alias(int); int main...
  • typedef int int_array[4]

    千次阅读 2015-03-29 21:37:49
    这个出现在C++prime第四版第124页,刚看没理解#include using namespace std; int main() { int ia[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};... typedef int int_array[4]; for(int_array *p=ia;p!=ia+3;++p)
  • 例题: #include int inc(int a) { return(++a); } int multi(int*a,int*b,int*c) ...typedef int(FUNC1)(int);...typedef int(FUNC2) (int*,int*,int*); void show(FUNC2 fu
  • typedef int Long_int [3]个人理解

    千次阅读 2014-09-07 10:20:43
    定义长整数为: typedefintLong_int[3] /* typedef: typedef与#define有些类似,但在一些复杂用法上就不同了。 1.定义一种类型的别名 2.用在旧的C代码中,帮助struct.以前的代码中,生命struct新对象时,必须...
  • typedef介绍

    万次阅读 多人点赞 2019-08-21 17:18:48
    typedef为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 typedef本身是一种存储类的关键字,与auto、extern、static、...
  • lpAddFun是typedef定义的一个名称 可以用来定义变量 比如 lpAddFun p; 那 p就是 int(*p)(int, int); 首先(*p)说明p是一个指针,(*p)();说明p指向函数 (*p)(int, int)说明p指向的函数有两个int类型参数, 最后 int(*...
  • #define a int[10] typedef int a[10]

    千次阅读 2016-06-29 19:59:14
    #define a int[10]和typedef int a[10]的使用方法
  • 在DLL学习中出现了一个不太好懂的语句: typedef int (*ADDPROC)(int a, int b)
  • typedef int int_array[4];

    千次阅读 2011-12-12 15:01:23
    #include using namespace std; int main() { int ia[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};... typedef int int_array[4]; for (int_array *p =ia;p!= ia+3;++p) { for (int *q=*p;q!=*p+4;++q) { cou
  • #include "iostream" using namespace std; int add(int a,int b){ ...typedef int (* func)(int ,int ) ; void main(){ func f = add; int n = f(1,2); cout } 其中 typedef int
  • #define 预处理指令,在编译...typedef int * q与#define p int* 作用都是用 q或p代替int*,但是正如前面所说,#define只是进行简单的替换,而typedef是采用如同定义变量的一种方法来声明一种类型 也就是说: #define
  • typedef int* PINT与#define PINT int*的区别

    千次阅读 2017-03-09 17:48:54
    这是一个很多人都不会用错但是却不甚了解的知识点,(正因为不会用...typedef int* PINT_TYPconst int * a; const PINT_DEF b; const PINT_DEF c;有人认为上面三条语句在typedef与#define替换之后皆一样,亦即:const i
  • typedef int(init_fnc_t) (void); 这个就是一个取别名的过程。 我们通常情况下会如下使用 typedeftypedef int MyInt; MyInt a; 这个时候我们的MyInt 就和int是一样的意思。 而对于函数的申明我们通常会这样...
  • typedef void sigfunc(int);  sigfunc *signal(int signr,sigfunc *handler);  其中typedef定义了一个有一个整型参数无返回值的函数类型。void (*handler)(int)表示一个有一个整型参数无返回值的函数指针...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,924
精华内容 39,169
关键字:

inttypedef