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

Yapamazsınız diyorsunuz fakat Codeblocks´ta kod gözümün önünde 2-3 kez 0 hata çalıştı, kafamı karıştıran nokta da bu.
Codeblocks arkada kendisi bellek işlemlerini ekleyip o şekilde makine koduna çeviriyor olabilir.
 
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:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı