Как использовать два параметра, указывающие на одну и ту же структуру в одной функции? - PullRequest
0 голосов
/ 11 мая 2010

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

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

#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 в качестве параметра, указывающего на ту же структуру, что и test, в одной и той же функции ...

Спасибо! Пожалуйста, скажите мне, если вам нужно больше разъяснений

1 Ответ

1 голос
/ 12 мая 2010

Я думаю, что это ваша домашняя работа, поэтому я просто напишу другую функцию, которая может дать вам представление о том, что (я думаю) вам нужно сделать. Я прочитал, что вы не хотите изменять список параметров 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;
}
...