2010-05-11 2 views
0

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

Проблема, которую я не знаю, как добавить второй параметр на следующий код:

#include<stdio.h> 

#define first 500 
#define sec 500 


struct trial{ 
    int f; 
    int r; 
    float what[first][sec]; 
}; 

int trialtest(trial *test); 

main(){ 
    trial test; 
    trialtest(&test); 
} 

int trialtest(trial *test){ 
    int z,x,i; 
    for(i=0;i<5;i++){ 
     printf("%f,(*test).what[z][x]); 
    } 
    return 0; 
} 

Мне нужно, чтобы добавить новый параметр test_2 там (в одной функции), используя этот код:

for(i=0;i<5;i++){ 
     printf("%f,(*test_2).what[z][x]); 

Как int trialtest(trial *test) меняется? и как он меняется в основном?

Я знаю, что я должен объявить test_2, а также, как это:

trial test,test_2; 

А как насчет передачи адреса в функции? Мне не нужно его правильно редактировать?

trialtest(&test); --- This will remain the same ? 

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

Спасибо !! Скажите, пожалуйста, уточните пожалуйста

+0

Я смущен, почему у вас есть функция, которая принимает два параметра, которые указывают на одну и ту же структуру ... что-то звучит странно. Зачем вам это нужно? – FrustratedWithFormsDesigner

+0

Объявление 'test_2' как' struct trial' создаст новую структуру, а не точку на одну. Я подозреваю, что вы очень * смущены, и вы должны начать с объяснения, почему вы думаете, что вам нужно все это в первую очередь. –

+0

Моя программа принимает два файла матрицы, а затем отображает их, эта функция отображает любую матрицу, обе матрицы сохраняют содержимое в той же структуре. – NLed

ответ

1

Я думаю, что это ваша домашняя работа, поэтому я просто напишу другую функцию, которая может дать вам представление о том, что (я думаю) вам нужно сделать. Я читал, что вы не хотите изменять список параметров trail_test, поэтому я придерживался аналогичного списка параметров.

struct thing { 
    /* put some stuff here */ 
}; 
typedef struct thing thing; /* because this is C, not C++ */ 

int how_many_things(thing * thing_list); 

int main(void) { 
    int i; 
    thing * a; 
    int count_init = random(); /* let's surprise ourselves and make a random number of these */ 
    count_init %= 128; /* but not too many or it might not work at all */ 

    a = malloc(count_init*sizeof(things)+1); 
    for (i = 0; i < count_init; i++) { 
     thing_init(&(a[i])); 
    } 
    make_illegal_thing(&(a[count_init])); /* like '\0' at the end of a string */ 

    printf("There are %i things in the list\n", how_many_things(a)); 

    return 0; 
} 

/* This is very similar to strlen */ 
int how_many_things(thing * a) { 
    int count = 0; 
    while (is_legal_thing(a)) { 
     a++; 
     count++; 
    } 
    return count; 
} 
Смежные вопросы