C++ pointer, adresler ve değişkenler


C++’ın belki de en çok zorlanılan konuların biridir değişkenler. Bizde elimizden geldiğince örneklerle yardımcı olmaya çalışacağız;



İlk önce adresleri tanımlayalım. Her değişkenin, elemanın bir adresi vardır. Bu adreslerin yeri hiçbir zaman değişmez. Dizinin eleman sayısı değiştikçe adres de değişir. İki eleman aynı adreste bulunamaz. Örneğin;

//Adres tanımlamaları
#include<iostream>
using namespace std;
void dizi (int *p[]);
int main()
{
int y[]= (1,2,3,4,9,5,15)
for (int i=0; i<7; i++)
x[i]=&y[i];

a-) x[0] adres(1800) y[0] 1 1800
x[1] adres(1804) y[1] 2 1804
x[2] adres(1808) y[2] 3 1808

x[5] adres(1820) y[5] 15 1820
x[6]

for (int i=0; i<7; i++);
cout << *x[i] << ” ” ;

5 elemanlı dinamik değişken int tipindedir ve farklı değeri klavyeden okumaktadır. Kodu;

//Daha sonra okunan bu değerler ekrana bastırılacaktır. Okuma ve yazdırma işlemlerini dinamik dizi değişkenini
//2 farklı şekilde kullanarak .
#include<iostream>
using namespace std;
int main()
{
int *x; // inty[5]; for döngüsüyle. x[i]=&y[i] yaparım
x=new int [5];//Dinamik değişkenin 5 elemanlı dizi olduğu ve ilk elemanın bellek adresi TANIMLANDI.
for(int i=0;i<5;i++)
cin>>x[i] ;//adresteki değerdir, doğrudan değer değildir.

for(int i=0; i<5;i++)
cout<< x[i]<< ” “<<endl;
system(“pause”);
}
//ekrana yazdırılırken *x[i] olarak ifade edilmişti.

İndislerin değerleri her zaman 0’dan başlar. Yani dizinin 1. elemanı her zaman 0. indise sahiptir. Bu da ardışık olarak artarak birbirini takip eder. Örneğin;

//a)
// a[0]–x
// a[1]–x+1
// a[2]–x+2
// a[3]–x+3
//x=x+3–(4. eleman 3. ile indislenen eleman)
//*x=a[3]
//CEVAP: a dizisinin 3 ile indislenmiş 4. elemanın x adresidir.

#include<iostream>
using namespace std;
int main()
{
int a[5]={3,5,19,23,34}, *x;
int b[5]={13,18,19,25,3},*y;//b şıkkı eklendi
x=&a[0];
y=&b[0];
x=x+3;
cout << *x << endl;

for (int i=0; i<5; i++)
cout << a[i]<< ” ” ;
cout<<endl<<endl;
x=y+1;//bellek adreslerinde de tip değişimine izin vermedi.
cout<< *x <<endl;
system(“pause”);
}

Umarım biraz olsun yardımcı olmuştur. Kodlardan kendinizi kaybetmediğiniz bir dönem dileğiyle :)

Daha fazla soru ve örneği C++ sayfamızda bulabilirsiniz.

 

Bunlar da ilginizi çekebilir

Gitmeden yorumunuzu bırakın.


Time limit is exhausted. Please reload the CAPTCHA.