2017-11-11 147 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);