Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > параметры в функции


Автор: Chameleon 5.12.2005, 00:50
немоглибы пояснит как правельно предовать в функцию параметры.
в часности интерисует указатель на структуру, чтоб он там изменялся smile

Автор: DeadSoul 5.12.2005, 00:57
Код

struct A
{
int r;
// ....
};

// вариант 1
void Foo( A* pA )
{
 pA->r = 12;
//....
}
// вариант 2
void Foo1( A& refA )
{
refA.r = 12;
//....
}

// using
A q;
Foo(&q);
Foo1(q);

Автор: Chameleon 5.12.2005, 11:02
а если у меня вот такяая вещь
Код

struct node{
int info;
node *next;
}
int add(node *l){//как тут правильно нужно передавать
node *r;
r=(node *)malloc(sizeof(node));
if(l==NULL)l=r;else l->next=r;
return 1;
}

int main(){
node *root=NULL;//как нужно правельно объявлять

}

хотелосбы чтобы после выхода из функции root изменялся, это все к вопосу о рекурсивном построение дерева или списка

Автор: Neitron 5.12.2005, 11:12
Код
int add(node& *l)

Автор: DeadSoul 5.12.2005, 21:59
Neitron, нет. У тебя указатель на ссылку. Такое бывает?

int add(node **)

Автор: Neitron 6.12.2005, 10:24
DeadSoul
Сылка на указатель....
А вот у тебя указатель на указатель...
А человек просил ссылку...

Спасибо, упустил...
Вот так надо.
Код

int add(node * &l)

Автор: Romikgy 6.12.2005, 13:14
Код

struct node{    
int info;    
node *next;    
}    
int add(node *l){//как тут правильно нужно передавать    
node *r;    
r=(node *)malloc(sizeof(node));    
if(l==NULL)
//l=r;
else 
r->next=l;
l=r;    
return 1;    
}    
int main(){    
node *root=NULL;//как нужно правельно объявлять
    
}

Мож так?
Цитата(Chameleon @ 5.12.2005, 11:02)
хотелосбы чтобы после выхода из функции root изменялся,

менялся на что?? словами объясни.

Автор: S.A.P. 6.12.2005, 16:03
Цитата(Chameleon @ 5.12.2005, 11:02)
struct node{
int info;
node *next;
}
int add(node *l){//как тут правильно нужно передавать
node *r;
r=(node *)malloc(sizeof(node));
if(l==NULL)l=r;else l->next=r;
return 1;
}
int main(){
node *root=NULL;//как нужно правельно объявлять
}


А что здесь не работет? Тут можно для удобства возвращать новую ноду
Код

node* add(node *l)
{
// бла бла бла
    return r;
}


Код

node *root;
root=add( NULL );
node *next = add( root );
node *next1 = add( next );

и так далее. Код особо не сморел.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)