2012-04-15 12 views
-1

Schreiben Sie dieses Programm neu, um eine Funktion für jede Art von Ausdrucken zu verwenden. Versuchen Sie, Zeiger auf diese Funktionen zu übergeben, damit sie an den Daten arbeiten. Denken Sie daran, dass Sie eine Funktion deklarieren können, um einen Zeiger zu akzeptieren, aber verwenden Sie ihn einfach wie ein Array.Verwenden Sie eine Funktion für jede Art, wie Sie Dinge ausdrucken?

Wie geht es Ihnen? Ich habe c-Code, die mit for-Schleife sind, Index-Array und Zeiger-Index auszudrucken. Hier richtiger Code ohne Funktion:

 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; 
    } 

Aber ich brauche für jede der Möglichkeiten, Dinge auszudrucken. Aber ich kann nicht herausfinden. Hier mein Code mit Funktionen aber ohne Zeiger und Zeichen nur ganzzahlig. Gib mir, wie man es richtig macht:

#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; 
    } 
+0

Ich bin nicht ganz sicher, was Sie fragen, aber beachten Sie, dass 'sizeof' die Größe der Kompilierzeit eines Typs zurückgibt; für einen Funktionsparameter 'int a []', der die Größe eines '(int *)' hat, nicht die Laufzeitgröße des angenommenen Arrays, das an ihn übergeben wird. Sie haben auch die Funktionsparameter in Ihrem Beispiel schattiert, und es ist nicht klar, was Sie damit erreichen wollten. – geekosaur

+0

Dieser Code ist auf so viele verschiedene Arten so falsch. Sorry :(Wenn Sie zB "int a []" als Parameter übergeben und dann "int a []" als Parameter deklarieren, funktioniert das nicht. Wenn Sie ein [] in eine Funktion übergeben, dann "sizeof (a)" funktioniert nicht (es wird immer "4" zurückgegeben) usw. – paulsm4

+0

F: Was genau meinen Sie mit "jeder der Möglichkeiten, Dinge auszudrucken?" – paulsm4

Antwort

3

Versuchen Sie, eine Funktion zu schreiben, die die Daten drucken wird?

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; 
} 
+0

Nicht ich brauche den ersten richtigen Code mit Funktion und Zeigern umschreiben –

+0

Danke, mein Problem war, ich definiere nicht zählen wie int in der Funktion. –

+0

Ist das näher? –