Saya ingin mendeklarasikan variabel global di dalam fungsi main() ...

Di bawah ini adalah apa yang saya inginkan dari program tersebut

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

Saya ingin membuat array ukuran yang diberikan pengguna (di sini n-size) dan saya ingin mengakses array itu secara global. Jadi alih-alih membuat array ukuran '6' di luar fungsi main(), saya ingin membuat array ukuran 'n' secara global alih-alih melewatkan array setiap kali fungsi dipanggil ...

1
Vasukipriya K N 7 Januari 2021, 17:23

3 jawaban

Jawaban Terbaik

Anda mungkin ingin menggunakan array yang dialokasikan ke heap dengan menggunakan 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
}
2
Matteo Galletta 15 Januari 2021, 13:43

Anda dapat mendeklarasikan pointer sebagai variabel global dan menetapkan buffer untuk itu di 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.) */
  }
}
4
MikeCAT 7 Januari 2021, 14:26

Kamu tidak bisa melakukan itu.

Yang paling dekat Anda bisa mendapatkannya, tentukan penunjuk dalam ruang lingkup file (yaitu, global), alokasikan memori ke sana dengan menggunakan fungsi pengalokasi (malloc() dan keluarga) dan gunakan penunjuk yang sama dalam panggilan fungsi lain seperlunya. Karena masa pakai memori yang dialokasikan sampai tidak dialokasikan secara terprogram (diteruskan ke free()), fungsi lain dapat menggunakan memori yang dialokasikan.

1
Sourav Ghosh 7 Januari 2021, 14:25