Bu yüzden, C işaretçileri ve işaretçi aritmetiği ile oynuyordum, çünkü onlarla tamamen rahat değilim. Bu kodla geldim.Çift ve üçlü işaretçiler/çift boyut dizileriyle ilgili olarak
char* a[5] = { "Hi", "My", "Name", "Is" , "Dennis"};
char** aPtr = a; // This is acceptable because 'a' is double pointer
char*** aPtr2 = &aPtr; // This is also acceptable because they are triple pointers
//char ***aPtr2 = &a // This is not acceptable according to gcc 4.8.3, why ?
//This is the rest of the code, the side notes are only for checking
printf("%s\n",a[0]); //Prints Hi
printf("%s\n",a[1]); //Prints My
printf("%s\n",a[2]); //Prints Name
printf("%s\n",a[3]); //Prints Is
printf("%s\n",a[4]); //Prints Dennis
printf("%s\n",*(a+0)); //Prints Hi
printf("%s\n",*(a+1)); //Prints My
printf("%s\n",*(a+2)); //Prints Name
printf("%s\n",*(a+3)); //Prints Is
printf("%s\n",*(a+4)); //Prints Dennis
printf("%s\n",*(*(aPtr2) +0)); //Prints Hi
printf("%s\n",*(*(aPtr2) +1)); //Prints My // ap = a, *ap = *a, *(ap)+1 = *a+1 ?
printf("%s\n",*(*(aPtr2) +2)); //Prints Name
printf("%s\n",*(*(aPtr2) +3)); //Prints Is
printf("%s\n",*(*(aPtr2) +4)); //Prints Dennis
char*** aPtr2 = &a
neden gcc 4.8.3 göre kabul edilebilir değildir?
uyarı: Belki söylemeye çalıştığım şey belirsiz, bu yüzden gerekiyordu
[varsayılan olarak etkin] uyumsuz işaretçi türünden başlatma Maalesef
derleyici uyarı eklemek unuttum bu bağlantıyı ekleyin:- Bu, şu kodun geçerli olduğunu çalışır: http://ideone.com/4ePj4h. (satır 7 yorum yaptı)
- Bu, çalışmayan kod: http://ideone.com/KMG7OS.
Bildirim hatları açıklanır (hat 6 üzerinden yorum).
"Kabul edilemez" ile ne demek istiyorsunuz? Lütfen uyarı veya hata mesajını ekleyin. –
Kırıldığından emin misin? http://ideone.com/KM516t (Bir noktalı virgülü eksik olduğunuzu ve aPtr2'nin adını kullandığınızı unutmayın) – mtijanic
Gönderdiğim "ideone" bağlantısı gcc-4.9.2 için iyi bir derleme yaptı. Hangi derleyici bayrakları kullanıyorsunuz? – mtijanic