Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

C++ Sorularim


Seele

Öne çıkan mesajlar

Evet C++ ögrenmeye basladim. bu baslik altinda kafanizi agritmayi düsünüyorum
diyelim ki elimde struct var su sekilde

struct stack_a {
int size, last, *values;
}

ilk sorum memory olayi.


test stackt_a;

test = ( stack_t *) calloc (1 , sizeof( stack_t ));



buraya kada ok. simdi ikinci pointer icin yer acalim

test->values = (int*) realloc (test->values , 1 * sizeof(int));
test->values[1] = 154214;
ilk veri Ok. ikinci bir veri giricem ve memory büyütmem lazim.

test->values = (int*) realloc (test->values , 2 * sizeof(int));
test->values[2] = 554411;

test->values[1] ne yazikki silindi/üzerine yazildi. realloc yerine malloc mu kullanmam mi gerekli? yoksa bastan belli bir memory ayirmam mi gerekli. hem memory büyültüp hemde verilerin kaybolmasini nasil engellerim?

ikinci sorum söyle

test->values[1] = 8;
test->values[2] = 7;
test->values[3] = 3;
test->values[4] = 9;
test->values[5] = 4;

simdi kendime bir function yazip bana en kücük int degerini geri vermesini istiyorum . en iyi nasil yapabilirim ilk aklima gelen for kullanarak int degeeri bulmak returnlemek.

ücüncü sorum :


test->values[1] = 8;
test->values[2] = 7;
test->values[3] = 3;
test->values[4] = 9;
test->values[5] = 4;


en kücük degeri silmek diger veriler kaliyor. fikri olan ?
Link to comment
Sosyal ağlarda paylaş

gcc disinda compiler kullanmadim senelerdir, yaniliyor olabilirim de deklarasyonundan itibaren hata var, en azindan alisildik c++ kodu gibi gozukmuyor

stack_a test;

diye deklare ettik diyelim

birincisi pointer (ve dolasiyila dinamik olarak allocate edilmesi gerektigi anlamini tasiyan) degil bu degisken, alloc callarini gerektiren bir sey yok
ikincisi icindeki degerleri initialize etmiyorsun normal bir sekilde, sifirli da olabilir cop degerler de olabilir

compiler dert yanmazsa

stack_a test = (stack_a){0,0,NULL};

veya class haline getirip constructor olustur, values'un allocationi da icinde olsun oyle NULL falan olacagna

ana konu icinse, indexleri sifirdan baslatman gerekiyor ?
o noktadan bir sonraki int size kadar gittigin yer yine programa ait oldugu icin segfault yememissin sadece

duzeltip tekrar bak, diger sorduklarinda da ayni hata var

sen c# java ikisinden birinde calisiyordun zaten
indexler onlarda da tipik olarak 0'dan baslar, c++ icin 1'den basla diye biri mi yonlendirdi ?
Link to comment
Sosyal ağlarda paylaş

Malloc kullaninca silinmemesi imkansiz gibi geliyor, sen bir memory request ediyosun OS'ten sana orayi veriyor sonra onu sisteme geri vermeden(delete ile) yeni bir yer request ediyorsun o ilkini kapsayamaz baska yere koymak zorunda.

Degerleri yeni yere otomatik kopyaliyo desem ... o da olmaz. Niye boyle bisey implement etsinler.
Link to comment
Sosyal ağlarda paylaş

  • 3 hafta sonra ...
simdi bir C sorum var bir headerimiz var


typedef struct {
iEntry_t *first;
iEntry_t *last;
} iDB_t;
void loadDB(iDB_t *db, char *dbn, char *path);


simdi mainimizde de bir iDB yaratiyoruz.

iDB_t *dbtmp = malloc(sizeof(iDB_t ));


sonra bunu load fonksiyorunu yolluyoruz. bu fonksiyorun baska bir C file'da.


load(dbtmp, NULL, NULL);



dbtmp load fonksiyonu icinde OK yani veri var. ama
main geri gelince bos. pointerda nerde hata yapiyorum?
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...