Çözüldü C pointer sorusu

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
27 Mayıs 2019
Mesajlar
5.685
Çözümler
21
Daha fazla  
Cinsiyet
Erkek
C:
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define prnt(var) printf("The Value=%d\n",var)
int main(int argc, char *argv[]) {
int num[] = {1,3,2,4,3,5,4,2};
int *a = num;
++*a;
a=num;
prnt(*a);
prnt(&num[0]);
prnt(a);
 return 0;
}

Arkadaşlar bu kodla ilgili bir sorum olacaktı size. Şimdi "a" bizim pointerımız. İlk önce A'ya num[0]'ın adresini verdik. Daha sonra bu adresteki sayının değerini 1 arttırdık yani sayı 1'di 2 oldu ama sonra tekrar a = num; yaptığımız için a[0] sayısının adresini saklaması gerekmez mi? Neden prnt(*a) yapınca 2 sayısını gösteriyor?

1648636460948.png


@Vavien.
 
Çözüm
Tamam da ben ++*a yaptıktan sonra tekrar a=num; yapıyorum dolayısıyla sıfırlanması gerekmiyor mu?
Tanımladığın haline dönmesi için artım sırasında pointer kullanmamalısın. Senin paylaştığın biçimde dizinin elemanlarına müdahale edilmiş oluyor.

C++:
*aPointer = *aPointer + 1;
Dokuzuncu satırdaki kodu açarsak dizinin birinci elemanına atama yaptığını görebilirsin :)
Sorunun cevabı dokuzuncu satırda. Yıldız işaretini kaldırırsan ilk elemanı gösterir.

Breakpoint ile nerede ne yaptığına bakarsan değerin uçtuğunu anlayacaksın :)
 
Tamam da ben ++*a yaptıktan sonra tekrar a=num; yapıyorum dolayısıyla sıfırlanması gerekmiyor mu?
Tanımladığın haline dönmesi için artım sırasında pointer kullanmamalısın. Senin paylaştığın biçimde dizinin elemanlarına müdahale edilmiş oluyor.

C++:
*aPointer = *aPointer + 1;
Dokuzuncu satırdaki kodu açarsak dizinin birinci elemanına atama yaptığını görebilirsin :)
 
Son düzenleme:
Çözüm
Tamam da ben ++*a yaptıktan sonra tekrar a=num; yapıyorum dolayısıyla sıfırlanması gerekmiyor mu?
a ya num un işaret ettiği bellek adresini kopyaladın, dolayısıyla a da num da bellekte aynı adreslere işaret ediyor. Herhangi birisiyle yaptığın değişiklik hepsini etkiler, çünkü aynı kaynağa bakıyorlar.
 

Technopat Haberler

Geri
Yukarı