-1

このプログラムを書き直して、印刷する方法ごとに関数を使用します。これらの関数へのポインターを渡して、データで機能するようにしてください。ポインタを受け入れる関数を宣言できますが、配列のように使用することを忘れないでください。

ごきげんよう?インデックス配列とポインタインデックスの出力をループするためのcコードがあります。ここに関数のない正しいコードがあります:

       int main(int argc, char * argv[])
       {

       int number[] = {123, 456, 789};
       char *strchars[] = {
         "ABC", "DEF", "GHI"
       };

       int count = sizeof(number) / sizeof(int);
       int i = 0;

       for(i = 0; i < count; i++) {
          printf("%s has %d \n", strchars[i], number[i]);
       }

       // with pointers

       int *po_number = number;
       char **po_strchars = strchars;

       // loop with pointiers

       for(i = 0; i < count; i++) {
           printf("%s has %d \n", *(po_strchars+i), *(po_number+i));
       }
       return 0;
    }

しかし、私は物事を印刷する方法のそれぞれに使用する必要があります。しかし、私には理解できません。ここでは、関数はあるがポインタと文字がない私のコードは整数のみです。それを正しくする方法を教えてください:

    #include <stdio.h>
    // void print_arg(int a[], int b[]);

    // now it right?

    // void print_arg(int a[], int b[])

    void print_arg(int a, int b);

    // or now it right?

    void print_arg(int a, int b)
    {
          int a;
          int b;
          int count = sizeof(a) / sizeof(int);
          int i = 0;
              //and it
          for(i = 0; i < count; i++) {
              printf("%d and %d\n", a[i], b[i]);
          }
    } 

    int main(void)
    {
          int number[] = {22, 32, 22, 82, 2};
          int strchars[] = {12, 12, 12, 12, 12};

          int count = sizeof(number) / sizeof(int);
          print_arg(number[], strchars[]);

          return 0;
    }
4

1 に答える 1

3

データを出力する関数を作成しようとしていますか?

void print_array_args(int a[], int b[], int count)
{
  int i = 0;
  for(i = 0; i < count; i++) {
    printf("%d and %d\n", a[i], b[i]); // You can treat arrays as arrays...
    printf("%d and %d\n", *(a+i), *(b+i)); // ... or as pointers.
  }
} 

void print_pointer_args(int *a, int *b, int count)
{
  int i = 0;
  for (i = 0; i < count; i++) {
    printf("%d and %d\n", a[i], b[i]);     // You can treat pointers as arrays...
    printf("%d and %d\n", *(a+i), *(b+i)); // ... or as pointers.
  }
} 


int main(void)
{
  int number[] = {22, 32, 22, 82, 2};      // You can declare an array...
  int *strchars = malloc(5 * sizeof(int)); // ... or a pointer

  int i;
  for (i = 0; i < 5; i++) {
    strchars[i] = 12;      // You can initialize as an array....
    *(strchars + i) = 12;  // ... or as a pointer
  }

  int strchars[] = {12, 12, 12, 12, 12};
  int count = sizeof(number) / sizeof(int);
  print_array_args(number, strchars, count);
  print_pointer_args(number, strchars, count);
  return 0;
}
于 2012-04-15T05:04:49.857 に答える