我的主函数中有两个函数。
我曾尝试用指针来解决这个问题,但作为初学者,使用它非常复杂。
int main(){
int *p;
p = function_A();
function_B(p);
return 0;
}
int function_A(){
static int myArray[3];
myArray[0] = 11;
myArray[1] = 22;
myArray[2] = 33;
return myArray;
}
int function_B(int *myPointer){
// Here I just want to print my array I've got from function_A() to the
// console
printf("%d", *myPointer)
return 0;
}
function_A 应该返回一个数组,function_B 应该接受这个数组。
谢谢!
最佳答案
您的编译器可能已经告诉您一些问题。 首先,您应该在调用函数之前定义它们,或者至少预先声明它们。
其次,要返回一个数组,您需要返回一个指向该数组第一个元素的指针,即返回类型是int *
而不是int
。
第三,正如 FredK 所指出的,当您只收到一个指针时,您没有机会确定它指向的数组中有多少元素。您可以使用特定值终止数组,例如0
,否则您还需要返回数组的大小。
查看对您的程序所做的以下调整:
int* function_A(int *size){
static int myArray[3];
myArray[0] = 11;
myArray[1] = 22;
myArray[2] = 33;
if (size) {
*size = 3;
}
return myArray;
}
void function_B(int *myPointer, int size){
for (int i=0; i<size; i++) {
printf("%d\n", myPointer[i]);
}
}
int main(){
int *p;
int size=0;
p = function_A(&size);
function_B(p,size);
return 0;
}
关于c - 如何从函数 A 返回一个数组,然后函数 B 获取这个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54029347/