PDA

Tam Sürümünü Görmek İçin : işaretçilere ilk değer verilmesi??


nibble
22/02/2008, 11:57
void main(void){
char *p;
*p='a';
...
}
gibi bir kullanım hatalıyken, herbert schildt'in C kitabında

char *s[]={"a","b","c",NULL};
void main(viod){
...
}

şeklinde kullanılmış. global deklare edilen değişkenlerin 0 değeri aldığını biliyorum. bu işaretçiler içinde geçerlimi. kafam karıştı doğrusu.


golgepapaz
22/02/2008, 14:26
sanirim sen *p='a' ve char*s[]=.... nin ayni ifade oldugunu dusunmussun, aslinda birincisinde yaptigin dereferencing islemi, burada ilklenmemis bir isaretciyi dereference ettigin icin tanimsiz davranis var.ikincisinde ise bir char* dizisini ilkliyorsun, ikisi tamamen farkli seyler.
Eger birincisini char*p="a" yazsaydin ikisi ayni sey olurdu(kismen tabiiki).