c语言讲解 ;;&a==(long**)*a 和 return(long*)&x 这一块不懂,求高手指点

2024-11-06 17:31:57
推荐回答(2个)
回答(1):

&a==(long**)*a
首先&a是指针a的地址,(long**)是把*a的类陪仔型强制转换为long ** 。

long** 代表指向一个指针类型的地址,例如 int **a:
先变量a和指针运算符*结合,表明这是一个指针,然后再和第二个*结合表明这个指针指向的是一个指针的地址。芦态汪因此应将一个指针的地址赋给变量a才闭亮是正确的,比如int b=1; int *p=&b; int **a=&p。

return(long*)&x
是把&x转换为long*型然后赋值给x,a,b,c和x,y,z都是long*变量。

回答(2):

return(long*)&x //返回x的地址,结合函数,a=tpre(prefa); ,假设prefa输出的是a,那么函数tpre('a')返回戚握&a,那么a=tpre(prefa)就是把a自己的地址赋值给了自己。这闭仔信个时候我们再看&a == (long **)*a,右边(long **)*a的意思就是取a的值,由于前面已经把a的地址赋值给自己了,所以a的值就是自己的地址,而左边&a 取的也是轿轮a的地址,所以这个时候这个表达式是成立的。