c - 如何从函数 A 返回一个数组,然后函数 B 获取这个数组

标签 c arrays pointers

我的主函数中有两个函数。

我曾尝试用指针来解决这个问题,但作为初学者,使用它非常复杂。

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/

相关文章:

c++ - 我不知道如何存储表示为字符串的大量大数字

javascript - 合并嵌套数组并删除重复项

c++ - 为什么以下代码块给出输出 "ZZZ(some garbage value)"而不是 "ZZ(some garbage value)"

C编程-> wpa_supplicant连接-> udp广播发送到 "Network Unreachable"

c++ - C wINnet 互联网连接()

C 程序增加传递的数组的每个元素

pointers - 我如何在 Go 中做一个文字 *int64?

c - C中直线的图形交集

python - 支持 C 和 Python 之间的跨语言 (c) 标签的代码编辑器

c++ - 来自 const_iterator 取消引用的赋值会导致未定义的行为吗?