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

c++ kodu calismiyor, neden olabilir?


wanderer

Öne çıkan mesajlar

#include
#include
using namespace std;

int main()
{
long la[10];
for(int i=0; la[i]!=0; i++) { cout << la[i] << " " << &la[i] << endl;}
return 0;
}

burda 11. elemana yani escape char 0'a gelince programi bitirmesi gerekmez mi?
Hatta stroustrup'un kitabinda ornek olarak vermis ama vc++ da calismiyor.
neden olabilir?[hline]W.A.N.D.E.R.E.R.: Wireless Artificial Neohuman Designed for Efficient Repair and Efficient Reasoning

[Bu mesaj wanderer1985 tarafından 19 August 2003 21:33 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

char la[10] 'u initialize etmedigin icin hata veriyor, daha dogrusu la 'nin baslangic byteindan itibaren tek tek degeri 0 olan byte ariyor memoryde, la 'nin ilk 10 byteinda bulamayinca la[11] la[12] .. diye devam ediyor aramaya, o zaman da segmentation faulta sebep verir eninde sonunda, okumamasi gereken bi yeri okumaya kalkinca.

char la[10]; dedigin zaman, memoryden 10 bytelik (10 char degeri tutabilecek daha dogrusu) bi alan ayriliyor, ama degeri bosaltilmiyor, o anda o memory adresinde ne varsa degeri o.

stringler 0 nolu byte ile biterler, bittigi oyle anlasilir yani. mesela "wastiee" bir string ise, 7 karakter degil, 8 karakter vardir, 8. karakterin degeri stringin bittigini gosteren 0 nolu bytedir ( '', NULL, 0)[hline]wastiee
Link to comment
Sosyal ağlarda paylaş

char arrayleri de ile bitmez normalde.

soyle, eger bu bi C string 'i ise, ile biter C stringleri, ve de char arrayleridir kendileri.

ama sen char buffer[10]; diyip, bunu string olarak degil de, binary bi buffer gibi kullanabilirsin, 10 bytelik bir memory alani olarak yani, herhangi bi bitis karakterine bakmadan, buffer[0] ... buffer[9] araligini kullanarak (buffer[10], buffer[11] falan dersen, tanimladigin memorynin disina cikmis olursun, segmentation fault verir buyuk ihtimalle, vermese bile baya bi dert acar basina)

ama mesela

printf("%s", s);

dedigin zaman, s, bir C stringdir, char s[10]; gibi tanimlanip bittigi yerde de '' karakteri vardir.[hline]wastiee
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...