在运行时创建一个数组并将其传递给 C 中的函数?

标签 c arrays pointers runtime

我在 main() 函数中从用户那里获取一些输入,并相应地创建一个数组。由于该数组位置的性质,它对其他函数不可见,我需要将其传递给其他一些函数进行处理。

有没有办法在不为其分配内存并将指针传递给已分配内存的情况下执行此操作? Flight 是结构体 typedef。

int main()
{
    do{ // Read # of flights from user
        printf("Enter max number of flights to read in from file\n");
        printf("--> ");
        fflush(stdin);
    } while(!(scanf("%d",&num_of_flights)));

    flight database[num_of_flights];      // Create database for flights

最佳答案

在C中,你可以在运行时以这种方式分配内存

#include <stdlib.h>
#include <stdio.h>

void print_array(int *array, int array_size){
  for(int i = 0;  i < array_size; ++i){
    printf("%d ", *(array + i));
  }
}
int main(){
  int *array;
  int array_size;
  scanf("%d", &array_size);
  array = malloc(sizeof(int) * array_size);
  // Fill array with ints
  for(int i = 0; i < array_size; i++){
    *(array + i) = i;
  }

  print_array(array, array_size);
  return 0;
}

关于在运行时创建一个数组并将其传递给 C 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583585/

相关文章:

C - 将可变参数列表写入文件

c - 如何动态分配一个二维指针数组? (C)

c - 创建动态多维指针数组 (char**) 时出现运行时错误

arrays - 在 Swift 中将数组拆分为子数组

c++ - 这个指针构造函数是如何定义的?

c - 为什么 CodeBlocks 会突出显示关键字 class 并在没有任何错误的情况下编译它(我正在用 C 编程)?

c - LibCurl C Http 发布/获取

C 语法/AVR header

c++ - 将包含字符串数组和整数数组的结构传递给 C++ DLL

c# - 如何在 C# 中创建与键 (userID) 配对的固定长度字符串数组(聊天消息)