0

ポインターについて質問させてください。ここで何をすべきかわかりません。メインのメソッドがメインの外部のメソッドを呼び出しており、ポインターを使用する必要があります。基本的に、これはラフ ドラフトです: ありがとう!

 char *book[] = { "x", "y", "z",};
 int number[] = { 1, 2, 3};

 struct data{ char *bookname; int booknumber;};

 struct data *list[3];

  my_method(char *x, int y, int *z)
 {


   //creating a new struct 
   list[(*z)++] = (struct data*) malloc( sizeof(struct data) );

   //assigning arguments
   list[(*z)++]->bookname = x;
   list[(*z)++]->booknumber = y;

   (*z)++;
 }

 int main()
 {
   int nextValue = 0;

   my_method(book[nextValue], book[nextValue], &nextValue);

   int i;
   for(i = 0; i < 3; i++)
   {
     function(book[i], number[i]);

     printf("name: %c number: %d", list[i]->bookname, list[i]->booknumber);
   }
  }
4

2 に答える 2

2

メソッドに間違った引数を渡しているようです。次の行を変更してみてください。

my_method(book[nextValue], number[nextValue], &nextValue);

さらに、あなたの方法では、 z を 4 回インクリメントしているように見えますが、これはあなたが望む動作ではないと思います。次のように、最後に 1 回だけインクリメントする必要があります。

//creating a new struct 
list[*z] = (struct data*) malloc( sizeof(struct data) );

//assigning arguments
list[*z]->bookname = x;
list[*z]->booknumber = y;

(*z)++;
于 2012-07-30T13:09:29.180 に答える
0

次のコードを試してください。不要な静的ボイドを単純に削除しました。

 //declaration of method outside the main 
  void my_method(............,int *nextValue)
  {
  //................................//
  //..............................//


  //then increment the pointer
  (*nextValue)++;
  }//my_method

  int main()
  {

   int nextValue = 0;

  //Removed static void
  my_method(............, &nextValue);
  //........................................//
  }//main
于 2012-07-30T13:07:53.587 に答える