读书人

简单C语言函数有关问题

发布时间: 2013-09-28 10:01:20 作者: rapoo

简单C语言函数问题
void Insert(int *&a)
{
//函数内部的参数如何解释
//&是取地址 int * 是定义一个指针变量 我理解的
//求大神科普
}
[解决办法]

引用:
Quote: 引用:

C里面你编译能通过吗

我也不是很清楚是不是C,但是这样可以用 不是很理解
//头插法建立链表 
void InsertT(LNode *&C,int arry[],int x)
{
LNode *s,*r;
C=(LNode*)malloc(sizeof(LNode));
C->next=NULL;
r=C;
for(int i=0;i<x;++i)
{
s=(LNode*)malloc(sizeof(LNode));
s->num=arry[i];
s->next=r->next;
r->next=s;
}
}


我的理解:
void InsertT(LNode *&C,int arry[],int x) 中的第一个参数是一个LNode*类型的引用,即一个对指针类型的引用,这是一个pass by reference的方式,目的是改写指针LNode* C的值(函数体内通过将malloc的值赋给C,的确达到了这个目的)
类似于这个:

void test_ref(int *&a)
{
a = new int;
*a = 10;
}

void main()
{
int *p;
test_ref(p);
cout<<*p<<endl;
}

[解决办法]
这里'&'不是取地址,是引用
[解决办法]
这明显是C++的引用啊
[解决办法]
C里想修改指针的值,直接用指针的指针就行了啊,(LNode **C),没用过引用,在C里面

读书人网 >C语言

热点推荐