typedef与#define的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huanlanxingduan/article/details/50805708

1.typedef相当于起了个别名,#define是直接替换

2.

/*该程序用来说明百度知道上的一个问题(http://zhidao.baidu.com/link?url=G5OIdoVc1bvVmXkvZK9lTDYDusDacjGAqD7fT_fvFKNTfFrUQLhDB6L41r8oNBpSo_N8dm5QFX04dqAIs5LES_)
if
    #define pint1 int*
    typedef int* pint2;
then
    const pint2 p1;//p1可以更改,但是p1指向的内容(即*p1)不可更改
    const pint2 p2;//p2不可更改,但是p2指向的内容(即*p2)可以更改
*/
#include<stdio.h>

#define p_define int*
typedef int* p_typedef;

int main()
{
    int a=10;
    int b=20;
    const p_define pd;
    const p_typedef pt=&b;//pt只可以在定义的时候指定其所指向的地址,指定后不能更改,此句相当于int* const pt=&b

    pd=&a;//pd可以更改
    //pt=&b;//此处不可以赋值,因为pt不可更改
    printf("p_define=%d\n",*pd);
    printf("p_typedef=%d\n",*pt);
    
    //*pd=30;//pd指向的内容(即*pd)不可以更改
    *pt=40;//pt指向的内容(即*pt)可以更改
    printf("p_define=%d\n",*pd);
    printf("p_typedef=%d\n",*pt);
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/huanlanxingduan/article/details/50805708