The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите разобраться с поведением указателя."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите разобраться с поведением указателя."
Сообщение от ghost emailИскать по авторуВ закладки on 27-Мрт-04, 22:35  (MSK)
Помогите разобраться с поведением указателя.
Есть функция:
t_cycles *get_cycle_members(t_ligand *ligand)
{
unsigned int *data,*prev,j,prev_atom_number,atom_number;
char **bond_matrix;
t_cycles *cycles;

//Init all
cycles=(t_cycles*)malloc(sizeof(t_cycles));
cycles->cycle=(t_one_cycle*)malloc(sizeof(t_one_cycle));
cycles->size=0;
data=(unsigned int*)malloc(sizeof(unsigned int)*(ligand->atom_number+1));
prev=(unsigned int*)malloc(sizeof(unsigned int)*(ligand->atom_number+1));
//Cut and find again
while (atom_number=def_data(data,&bond_matrix,cycles,ligand))
.....

функция def_data:
unsigned int def_data(unsigned int *data,char **bond_matrix,t_cycles *cycles,t_ligand *ligand)
{
unsigned int j,i,p,q,atom_number;

bond_matrix=(char**) define_bond_matrix(ligand);
....

где указателю bond_matrix присваиваеться значение.
Во второй функции указатель корректно передаеться, а вот в первой заменяеться на всякий бред.
Как его можно передать наверх?
Спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Помогите разобраться с поведением указателя."
Сообщение от kavel emailИскать по авторуВ закладки(??) on 31-Мрт-04, 19:11  (MSK)
>Помогите разобраться с поведением указателя.
>Есть функция:
>t_cycles *get_cycle_members(t_ligand *ligand)
>{
>unsigned int *data,*prev,j,prev_atom_number,atom_number;
>char **bond_matrix;
>t_cycles *cycles;
>
>//Init all
>cycles=(t_cycles*)malloc(sizeof(t_cycles));
>cycles->cycle=(t_one_cycle*)malloc(sizeof(t_one_cycle));
>cycles->size=0;
>data=(unsigned int*)malloc(sizeof(unsigned int)*(ligand->atom_number+1));
>prev=(unsigned int*)malloc(sizeof(unsigned int)*(ligand->atom_number+1));
>//Cut and find again
>while (atom_number=def_data(data,&bond_matrix,cycles,ligand))
>.....
>
>функция def_data:
>unsigned int def_data(unsigned int *data,char **bond_matrix,t_cycles *cycles,t_ligand *ligand)
>{
>unsigned int j,i,p,q,atom_number;
>
>bond_matrix=(char**) define_bond_matrix(ligand);
>....
>
>где указателю bond_matrix присваиваеться значение.
>Во второй функции указатель корректно передаеться, а вот в первой заменяеться на
>всякий бред.
>Как его можно передать наверх?
>Спасибо.

Наверное тебе нужно так:

unsigned int def_data(unsigned int *data,char ***bond_matrix,t_cycles *cycles,t_ligand *ligand)
{
unsigned int j,i,p,q,atom_number;

*bond_matrix=(char**) define_bond_matrix(ligand);

т.к. переменные передаються в функцию по значению, ты и получаешь бред в первой функции и нужно использовать тройной указатель.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру