如何在 'C' 中的任何函数内声明全局变量?

How to declare a Global variable inside any function in 'C'?

我想在 main() 函数中声明一个全局变量...

下面是我希望程序的行为方式

#include<stdio.h>
int a[6];
int main()
{
  int n;
  scanf("%d",&n);
}

我想创建一个用户给定大小(此处为 n 大小)的数组,并且我想全局访问该数组。 因此,我不想在 main() 函数之外创建大小为“6”的数组,而是想全局创建 'n' 大小的数组,而不是在调用函数时传递数组...

你不能那样做。

最接近它,在文件范围内定义一个指针(即全局),使用分配器函数(malloc() 和系列)为其分配内存,并在其他函数调用中使用相同的指针有必要的。由于分配的内存的生命周期是在以编程方式释放(传递给 free())之前,其他函数可以使用分配的内存。

您可能希望使用通过 malloc

分配到堆中的数组
#include<stdio.h>
int *a;
int main()
{
  int n;
  scanf("%d", &n);
  a = malloc(sizeof(*a) * n);
  if(a == NULL) {
      // malloc error
  }

  // use your array here

  free(a); // at the end of the program make sure to release the memory allocated before
}

您可以在 main().

中将指针声明为全局变量并为其分配缓冲区
#include<stdio.h>
#include<stdlib.h>
int *a;
int main()
{
  int n;
  scanf("%d",&n);
  a = calloc(n, sizeof(*a)); /* calloc() initializes the allocated buffer to zero */
  if (a == NULL)
  {
    /* calloc() failed, handle error (print error message, exit program, etc.) */
  }
}