2016-04-12 13 views
-5

C) global değişkene (örneğin benim örneğimde 'kullanılmış' dizisi) kullanıcı fonksiyonlarında nasıl bir şey olduğunu söyleyemem (örneğin 'checkData' örneğindedir)? Eğer bir dizidir kullanılan sizce neden (;; '[boyutunu] kullanılan BOOL' yerine '= new bool [size] kullanılan' ama kullanılan)C - kullanıcı değişkenlerinde global değişkeni kullanamazsınız

#include <stdio.h> 
#define true 1 
#define false 0 

typedef int bool; 
bool *used; 
int i; 

void checkData(int i); 

int main() 
{ 
    int size = 10; 

    bool used[size]; 
    for (i = 0; i < size; i++) 
     used[i] = false; 

    for (i = 0; i < size; i++) 
     checkData(i); 

    return 0; 
} 

void checkData(int i) { 
    printf("%d - %d\n", i, used[i]); 
} 
+1

'CheckData' işleviniz zaten kullanılan' global' değişkenine erişir. Beklediğiniz değerleri almıyor çünkü 'ana' işlevi * aynı global değişkene erişmiyor. "main", bir * local * değişkenini, "bool [size] [boyut]]" ifadesini kullanır ve bunun yerine bunu ayarlar. – kaylum

+0

'malloc '... – user3386109

+1

veya' void checkData (int i, int [], size_t len) 'işlevini kullanın ve' ana()' işlevini iletmek için işlevini kullanın. – WhozCraig

cevap

0

benzer kod çalışır C++? 10 üye tip int dizisi için sözdizimi örneğin şöyledir:

int used[10]; 

Not: fonksiyonunda Eğer

0

bool used[size];

main() yerel değişkendir kullanılan int işaretçi olmayan dizi erişim checkdata genel kapsamda used değişken adını gizler, böylece ana işleviniz "görmez" bool* used. Ana sayfada kullandığınız zaman, bool* used genel değişkenine erişmiyorsunuz. checkData() işleviniz, main()'da oluşturduğunuzla aynı olmayan global değişkene erişir.

+0

tamam. ancak main() 'da ayarlanan checkData() değişkenine (kullanılmış []) nasıl erişebilirim? (ancak() – Alexandr

+0

dan argüman olarak kullanılmış [] kullanılmadan geçmeden C++ değil, C hakkında! – Olaf

+0

@Alexandr: "Yerel" değişkenlerin "global" değişkenler olarak adlandırılmamasının iyi bir nedeni vardır. – Olaf

0

used değişkeni, çoğaltılmış bir addır. main’da yerel used’a erişilir. Ancak, checkData'da global örnek kullanılır, ancak bir NULL işaretçisini iptal ettiğiniz için bir hataya neden olur (statik değişkenler 0 olarak başlatılır).

İlgili konular