关于对指针取地址

来源:百度知道 编辑:UC知道 时间:2024/06/21 15:02:04
我看有的程序对指针取地址,用&p
我想为何不直接定义,比如int ** p,然后直接用p
而去定义int * p
然后用&p呢?

比如下面的(Event 是个定义好的结构体)
Event *free_events

Event *new_event(void)
{
extern Event *free_events;
Event *p;
int i;
if (free_events==NULL)
{
if ((p=(Event *)malloc(sizeof(Event)))==NULL)
{ printf("Error : Memory allocation error\n");
exit(1);
}
p->time = (Time)0;
insert_event(&free_events,p);
}
return(get_event(&free_events)); /
楼下的说如果直接定义**p则不能改变*p的内容
我这样不就改变了吗?
*(*p)=5;

另外楼下的好像没有理解我的题意啊

类型 a=&p,取变量p的地址,这样对*a操作能改变p的内容,如果直接定义**p则不能改变*p的内容,因为当函数传递时是复制传递的,你把他的变量传过去而没有把地址传过去就不能通过地址取找到相应的内存地址,改变其内容。