Visual Studio kodu çalıştırmıyor

Arkadaşlar, maclar[] dizisinin boyutunu belirleyen x değişkeni, zaten x değişkenine değer verildikten sonra giriliyor.
Şu an pek müsait değilim. Bakamıyorum ama bahsettiğim şey şu. Aşağıdaki kodu yapınca veriyor o derleyici hatasını.



Kod:
#include<iostream>

using namespace std;

int main() {

    int a = 0;

    cout << "a: ";
    cin >> a;

    int b[a];

    return 0;
}

@Musa B. Normal scanf ile şu kodu hazırladım. C kısmında çalışmıyor. C++'taki hatayı veriyor.

Çünkü program çalışmadan önce o dizi için bellekten ne kadar yer alınacağını belirtmeniz gerek. Program çalıştıktan sonra kullanıcıdan (veya başka bir yerden) girdi alıp o girdi miktarınca dizi istiyorsanız bellek yönetimi ile uğraşmanız gerek.

scanf_s Visual Studio'da sorun çıkarmıyor. Ama dediğim olay çıkartıyor. Kodunuza göz attığımda başka bir sorun yok gibi.
Bellek yönetimi ile istediğinizi yapmaya çalışınca şu tip bir şey ortaya çıkıyor.
Tavsiyem daha basit seviyede olduğunuz ve uğraşmamak için direkt 100/1000 gibi bir değerli diziyi oluşturup bellek yönetimi ile uğraşmamanız.


Kod:
#define C

#ifdef CPP
#include<iostream>

using namespace std;

int main() {

    int a = 0;

    cout << "a: ";
    cin >> a;

    int b[a];

    return 0;
}

#endif // CPP

#ifdef C
#include <stdio.h>

int main() {
    int a = 0;

    printf("a: ");
    scanf("%d", &a);

    int b[a];

    return 0;
}

#endif // C

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

int main() {
    int a = 0;

    printf("a: ");
    scanf_s("%d", &a);

    int* b = (int*)malloc(sizeof(int) * a);
    // Üstteki satır sayesinde artık b[i] şeklinde diziye erişebilirsiniz.
    // İçi boş/çöp değerlerle dolu olabilir. Derleyiciye göre değişiklik gösterir.
    // malloc kullanıldığı için program sonlandığında free kullanılmalı.
   
    for (int i = 0; i < a; ++i)
        b[i] = i * i;

    for (int i = 0; i < a; ++i)
        printf("%d: %d\n", i + 1, b[i]);

    free(b);

    return 0;
}
 
Son düzenleme:

Geri
Yukarı