Çözüldü C dilinde dizi mantığı nasıldır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Primearc

Hectopat
Katılım
3 Ocak 2021
Mesajlar
1.489
Makaleler
3
Çözümler
13
Yer
Matrix
C:
char arr1[][20] = {"marmara","ege","akdeniz","ic_anadolu","guneydogu_anadolu","dogu_anadolu"};
char* arr2[] = {"marmara","ege","akdeniz","ic_anadolu","guneydogu_anadolu","dogu_anadolu"};
Bu ikisi nasıl aynı şey? Birinci kodu rahatça kavrayabiliyorum ama ikinci kodu hiç anlayamadım. İkinci kodda arr2[] dizisinin pointer tutması gerek değil mi? Şunun gibi int* arr3[] = {&a,&b,&c};

Buradaki mantığı bana anlatabilecek var mı?
 
Çözüm
İkinci kodda arr2[] dizisinin pointer tutması gerek değil mi?
Öyle yapıyo zaten. Senin tırnak içinde verdiğin her metin const char* idir. Programda bir yerde durur. Sen ilkinde de ikincisinde de onları const char* olarak tanımlıyorsun. Sonra da atama yapıyorsun.
char arr[20] gibi bir tanımlamada zaten 20 karakter uzunluğunda bellekte bir yer otomatik tutuluyor. Bunun için ek bir adres tanımına gerek yok. Pointer ile yaptığımızda başlangıçta 1 bytelık yer tutar. Yazdığınız veri tek bytelık veri olmadığı içinde *(arr + 1); diyerek otomatik atanır.
 
Artı -2 Eksi
İkinci kodda arr2[] dizisinin pointer tutması gerek değil mi?
Öyle yapıyo zaten. Senin tırnak içinde verdiğin her metin const char* idir. Programda bir yerde durur. Sen ilkinde de ikincisinde de onları const char* olarak tanımlıyorsun. Sonra da atama yapıyorsun.
 
Çözüm

Yeni konular

Geri
Yukarı