C - 如何返回多个字符
问题描述:
任何人都知道如何从函数返回3个字符值到主要部分?三个字符必须由用户输入并制成一个金字塔。我被告知使用指针,但不知道如何去做,并不断收到错误。这三个字符必须在主要功能中使用才能制作金字塔形状。C - 如何返回多个字符
答
我写指针的一个例子,我希望这是有用的:
main(){
int a,b,c;
doSomething(&a,&b,&c);
}
void doSomething(int *x, int *y, int *z){
//example
*x = 5;
*y = 7;
*z = 10;
}
答
要在我的评论扩大,基本上有两种方式,我会建议解决这个问题,其中第一个有两个变种(取决于用例和要求)。 。
-
传递一个数组作为函数参数,并将其填充在这个带有取决于所需要的两个变种:
-
只需使用普通的数组
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);
-
-
返回的第二种方式多个值是通过使用结构:
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);
也许你想*字符串*?那么最好的解决方案是将一个数组作为参数传递给函数,并让该函数正确地填充数组。即使你只需要三个独立的字符,而不是一个字符串,这也可以工作。要么,要么返回*结构*。 –