2017-11-11 138 views
-1

任何人都知道如何從函數返回3個字符值到主要部分?三個字符必須由用戶輸入並製成一個金字塔。我被告知使用指針,但不知道如何去做,並不斷收到錯誤。這三個字符必須在主要功能中使用才能製作金字塔形狀。C - 如何返回多個字符

+0

也許你想*字符串*?那麼最好的解決方案是將一個數組作爲參數傳遞給函數,並讓該函數正確地填充數組。即使你只需要三個獨立的字符,而不是一個字符串,這也可以工作。要麼,要麼返回*結構*。 –

回答

1

我寫指針的一個例子,我希望這是有用的:

main(){ 
    int a,b,c; 
    doSomething(&a,&b,&c); 
} 

void doSomething(int *x, int *y, int *z){ 
    //example 
    *x = 5; 
    *y = 7; 
    *z = 10; 
} 
3

要在我的評論擴大,基本上有兩種方式,我會建議解決這個問題,其中第一個有兩個變種(取決於用例和要求)。 。

  1. 傳遞一個數組作爲函數參數,並將其填充在這個帶有取決於所需要的兩個變種:

    • 只需使用普通的數組

      void doSomething(char *array) 
      { 
          array[0] = 'A'; 
          array[1] = 'B'; 
          array[2] = 'C'; 
      } 
      

      撥打電話

      char array[3]; 
      doSomething(array); 
      printf("First character is '%c'\n", array[0]); 
      
    • 第二變體基本上與上述相同,但對待陣列作爲(空終止)字符串:

      void doSomething(char *array) 
      { 
          strcpy(array, "ABC"); 
      } 
      

      呼叫等

      char array[4]; // One extra for terminator 
      doSomething(array); 
      printf("String is '%s'\n", array); 
      
  2. 返回的第二種方式多個值是通過使用結構:

    struct Data 
    { 
        char a; 
        char b; 
        char c; 
    }; 
    
    struct Data doSomething(void) 
    { 
        struct Data data; 
        data.a = 'A'; 
        data.b = 'B'; 
        data.c = 'C'; 
    
        // or struct Data data = { 'A', 'B', 'C' }; 
    
        return data; 
    } 
    

    調用像

    struct Data data = doSomething(); 
    printf("First character is '%c'\n", data.a);