*&p这是一种什么用法?详细的解析下!!谢了

set * cha_set( set *&a, set *&b )
{
set *p=a,*q=c,*h=b,*s,*f;
set *ch=( set *)malloc(sizeof(set));
ch=NULL;
while(p)
{
if(IN_SET(h,p->data)==1)
{
s=( set *)malloc(sizeof(set));
s->data=p->data;
s->next=NULL;
q=ch;
f=ch;
while(q)
{
f=q;
q=q->next;
}
if(q==ch)
{
ch=s;
}
else{
f->next=s;
s->next=q;
}
}
p=p->next;
}
return ch;
}
调用函数为ch=cha_set(d,c);在前面有定义如下
typedef struct set
{
int data;
set *next;
}set;

set *c;
set *d;

*、&这两个优先级相同,所以应该是*(&p),先取p的地址,然后取这个地址的上数据,就是p追问

我之前也觉的是这样的,但我在将其作为函数参数的时候,如
struct *link(struct set *&P);这样的时候可以运行结果也对,但我去掉&后也行的
这是为什么,如果struct *link(struct set *&P);这样*&P就等于p,那为什么可以接收指针的实参呢?

追答

不是太清楚你的意思,不如你把代码贴出来看看。

追问

代码太长了,上面这是部分,
像之前我追问的那样,去掉&后也行的
但如果*&a就等于a
那为什么去掉&后*a也可以
那不就是a和*a都可以作为形参了?这不行吧?为什么?不知你有没清楚我的意思?

追答

&可以用来做与运算,或者是取变量地址,但你在函数定义处参数里面用,不会是与运算,如果说是取变量地址的话,首先变量要先定义,这样的话a、b应该算是未定义的,所以不是这两种用法。
&还有一种引用的用法,就是引用某个变量作为形参,形参改变可以影响实参,估计就是这个。
再看看你的定义:set * cha_set( set *&a, set *&b ){},你不理解的应该是这种状态下调用此函数时用set*为什么可以吧。这两个形参都是set*的变量,&作为引用,只是说明a、b在函数里面改变时,d、c也会相应改变,对变量类型没有贡献,用set*的参数传进来也没错。
个人见解,你再多咨询下看看。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-18
*&p = p
第2个回答  2012-02-18
指针的地址
相当于二级指针

*&p这是一种什么用法?详细的解析下!!谢了
、&这两个优先级相同,所以应该是*(&p),先取p的地址,然后取这个地址的上数据,就是p

...列表里面有一个这样的参数:int **&p 这是怎么个用法???
(**)(&p) 这样子能理解吧。一个二级 引用指针。

在c语言中*&p是哪种传递
可以这么理解,& 表示取p的地址,然后执行*操作,就是取该地址上的值,最后结果就是把p所指 上的值传递给Delete函数,可以通过改变p的值达到更改p所指地址的值,传递效果就是,把p的地址的地址作为对象传递给Delete函数

*&p表示什么意思?
即 p是a 的别名,p和a其实是同一个整形变量,两个占用同一块内存空间,如果有 p=15;那么a也是15,修改p与修改a是完全等价的 那么 int *a;int * &p=a;很容易理解,把 int * 看成一个类型,a就是一个整型指针,p 是a的别名。

c++定义函数参数(int * & p)怎么理解,是什么意思
即类型是int * p 由于是引用传值,所以对该参数不会新分配空间 而是直接用实参的空间 这样在函数中对p的任何修改 实参本身也会同步修改 举例来说 对于 void func(int *&p){ p = NULL;} 调用的时候 int main(){ int * i = 0x1234;func(i);} 这样在调用后 i值为NULL ...

void*&p是什么意思,解释一下吧。谢谢
先进行&P运算,得到P的地址,在进行*运算,即&P指向的变量也就是P。定义一个空类型的变量P

c语言,如果p代表地址的话,那么*&p代表的是地址还是具体值?为什么
p是地址,*p是值,*&p是地址,可以把*和&理解互相抵消了,所以*&p等于p 上面的程序输出一目了然,请采纳!

c++中int*&p和int&*p的区别
1、int *&p:int *&p是指针的int类型引用。2、int &*p:int &*p是引用的int类型指针。二、 使用不同 1、int *&p:int *&p是指针 的 别名 ,可以当成指针使用。2、int &*p:int &*p指针不能指向引用,不具有确定的存储,无法直接使用。三、访问不同 1、int *&p:int *&p可以直接访问...

函数参数的这种写法什么意思?char* &p
char *&p,char * &p,char*& p几种写法都是同一个意思:声明p是能指向char型变量的指针的引用(引用是C++中的一种数据类型,实质是为已有的变量起一个别名)。把形式参数指针声明为引用,在函数中完成交换时就不必拷贝字符串本身,而只交换一下两个字符串的首指针就可以了。本例中就是执行调用...

...*(&p),这些怎么区分,怎么理解,望详细的解释一下
指针常量是指针所指向的位置不能改变,即指针本身是一个常量。但是指针常量可以通过间接引用修改内存中的数据。定义指针常量的语句格式为:指针类型 *const 指针常量名=&变量名 比如说定义了一个整形变量 int a = 1; 同时定义了一个指针p指向这个变量a: int *p = &a;但我用完这个变量和指针的...

相似回答
大家正在搜