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;
}