C语言指针难点?高手请进… typedef int *p; p r; p &q=r; 这是怎么理解?

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:28:39

typedef int* p;
void main(void)
{
uchar i;
p r =NULL;
int aa = 0x2222;
r =&aa;
p &q=r;
*q =0x3333;
printf("*r = %x , *q =%x, aa =%x \n", *r,*q, aa);
}

从结果可以看出,通过引用已经改变了aa里面的值。

怎么感觉像C++里的"用类去定义成员函数",如果你没打错,我的理解是:用p去定义一个名为r的变量,然后给r一个地址指针&q

这个C++咯
typedef int * p; //设定int *的别名p
p r;//int * r
p &q=r;//int * &q=r

结果是r为int *; r是int * 的引用

这是C++中容易让人迷糊的一个知识点:
typedef int *p; p r; p &q=r;
这行按分号可分成三个语句,分别是
1 typedef int * p;
2 p r;
3 p &q=r;//int * &q=r
第一行其实可以写成如下格式
typedef int* p;
这就容易看懂了 其实就是设定int *的别名为p,其他两行的 类型p 其实也就是 int* 类型;所以第二行就是声名了一个int类型的指针。第三行是声名一个
指针类型的引用q, 并将r赋值给 q