C - 如何返回多个char

时间:2017-11-11 15:15:49

标签: c function pointers return

任何人都知道如何将3个char值从函数返回到主要部分?三个字符必须由用户输入并制成金字塔。我被告知使用指针,但不明白如何做,并不断收到错误。然后必须在主函数中使用这3个字符来制作金字塔形状。

2 个答案:

答案 0 :(得分: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]);
      
    • 第二个变体基本上与上面相同,但将数组视为(以null结尾的)字符串:

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

答案 1 :(得分: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;
}