Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Hafta 3

#include <iostream> #include <iostream>


using namespace std; using namespace std;
int main( )
int main( ) {
{ char *u;
char *u; char f[20]="DPU Bilgisayar";
char f= 'a'; u=&f[0];

u=&f; cout<<f<<endl; //diziyi yazar


cout<<&f<<endl; //dizinin adresini yazar
cout<<"karakterimiz : "<<f<<endl; cout<<(void*)(&f[0])<<endl; //ilk elemanın
//cout<<"karakterimiz : "<<*u<<endl; adresini yazar
return 0; cout<<(void*)(&f[1])<<endl; //indis:1 olan
} elemanın adresini yazar
return 0;
}

1
#include <iostream>
using namespace std;
int main( )
{ Çıktı : ?
char f[20]="DPU Bilgisayar";
int sayi[3]={1,2,3};

cout<<f<<endl; //diziyi yazar


cout<<&f<<endl; //dizinin adresini yazar
cout<<(void*)(&f[0])<<endl; //ilk elemanın adresini yazar
cout<<(void*)(&f[1])<<endl; //indis:1 olan elemanın adresini yazar
cout<<endl;
cout<<sayi<<endl; //dizinin adresini yazar
cout<<&sayi<<endl; //dizinin adresini yazar
cout<<&sayi[0]<<endl; //ilk elemanın adresini yazar
cout<<&sayi[1]<<endl; //indis:1 olan elemanın adresini yazar

return 0;
}

#include <iostream> #include <iostream>


using namespace std; using namespace std;
int main() int main()
{ {
char p1[] = "dizi olarak tanimlandi"; char p1[] = "dizi olarak tanimlandi";
char* p2 = "isaretci olarak tanimlandi"; char* p2 = "isaretci olarak tanimlandi";
cout << endl ;
cout << p1 << endl; cout << p1 << endl << p2 << endl;
cout << p2; cout<<&p2<<endl;
return 0; // p1++; // Hatalı: dizi ismini artıramıyoruz
} p2++; // p2 işaretçisinin yeri değişmez,
ancak indis artıyor
p2++;

cout << p1 << endl << p2 <<endl;


cout<<&p2<<endl;
return 0;
}
• p1 isimli dizi okunabilir ve yazılabilirdir.
• p2 isimli işaretçinin gösterdiği metin sadece okunabilirdir.
• Sonraki sayfalardaki örnekleri takip ediniz

2
#include <iostream>
using namespace std;
int main()
{
char p1[]="dpu"; // sonlandırıcı karakter ile toplam 4byte
//"dpu" hafızanın sadece okunabilen kısmına depolanır ancak kopyası yığın halinde de bulundurulur, Çıktı:
//burada içerikte değişiklik yapmamıza izin verilir, yani okunabilir ve yazılabilirdir.
//o yüzden tüm elemanlarına ulaşılabilir.

cout<<sizeof(p1)<<endl; //dizinin büyüklüğü


cout<<sizeof(*p1)<<endl; //p1 dizisinin ilk elamanın büyüklüğü
cout<<p1<<endl; //diziyi yazdır (dizi ismi işaretçi gibi kullanılmış)
cout<<*p1<<endl; //p1[0] ile aynı, 0 indisli eleman
cout<<*(p1+1)<<endl; //p2[1] ile aynı, 1 indisli eleman
cout<< &p1 <<endl; //p1 dizisinin adresi ya da p1[0] adresi
cout<<(void*)(&p1[1])<<endl; //indis:1 olan elemanın adresini yazar
cout << &p1+1 <<endl; //p1 dizisinin boyutu 4 olduğu için adres verisine 4 ekledi

*(p1+2)='e'; // içerikte değişiklik yapmamıza izin verilir, yani okunabilir ve yazılabilirdir.


cout<<p1<<endl;
return 0;
}

#include <iostream>
using namespace std;
int main()
{
char *p2 = "dpu"; //const char *p2 = "dpu"; demek daha uygun
//bu ifade sadece okunabilirdir, üzerinde değişiklik yapılamaz Çıktı:
//"dpu" hafızanın sadece okunabilen (read-only) kısmına depolanır. Kopyası bulunmaz.
//adres yazdırmak için (void*) kullanmalıyız
int *p3; //bir tamsayının adresinin tutan işaretçi
cout<<sizeof(p3)<<endl; //işaretçinin büyüklüğü (64bitlik sistemlerde 8byte)
cout<<sizeof(p2)<<endl; //işaretçinin büyüklüğü (64bitlik sistemlerde 8byte)
cout<<sizeof(*p2)<<endl; //p2nin gösterdiği dizideki ilk elamanın büyüklüğü
cout<<p2<<endl; //işaretçinin gösterdiği diziyi yazdır
cout<<*p2<<endl; //p2[0] ile aynı, 0 indisli eleman
cout<<*(p2+1)<<endl; //p2[1] ile aynı, 1 indisli eleman
//*(p2+2)='e'; //HATA! içerikte değişiklik yapılamaz, sadece okunabilir.
cout<< &p2 << endl << &p2+1 <<endl;
cout << &p3 << endl << &p3+1 << endl;
//p2 ve p3 işaretçilerinin adresleri
//64bit işlemcilerde sonraki işaretçi türden bağımsız olarak 8byte sonrasını işaret ediyor
cout<<(void*)(&p2[0])<<endl; //ilk elemanın adresini yazar
cout<<(void*)(&p2[1])<<endl; //ilk elemanın adresini yazar
return 0;
}

3
#include <iostream>
#include <string.h> //strlen()
//#include <cstring> //strlen()
using namespace std; Çıktı : ?
int main( )
{
char *p ="kutahya";
int index;

for(index=(strlen(p)-1); index>=0; index--)


cout<<p[index]<<endl;

return 0;
}
//* Strlen() fonksiyonu, karakter dizisinin başlangıç adresini
parametre olarak alır. Bu adresten başlayarak sonlandırıcı
karakteri görene kadar tüm karakter sayısını bulur.

#include <iostream> #include <iostream>


#include <string> //getline()için #include <string> //getline()için
using namespace std; using namespace std;

int main() int main()


{ {
string s; string s;
string *p;
cout<<"bir seyler yaziniz:"<<endl; p=&s;
getline(cin, s);
cout<<"bir seyler yaziniz:"<<endl;
cout <<"uzunluk: "<< s.length(); getline(cin, *p);
return 0;
} cout <<"uzunluk: "<< (*p).length();
return 0;
}

Çıktı:

4
//Büyük küçük harf değiştiren program //DEVAMI
#include <iostream>
#include <cstring> void degistir(char *cdizi,int n)
using namespace std; {
for(int j=0;j<n;j++)
void degistir(char *, int); {
if(cdizi[j]>96) //>90
int main() cdizi[j]=cdizi[j]-32;
{ else
char dizi[7]={'T','u','r','k','i','y','E’}; cdizi[j]=cdizi[j]+32;
}
degistir(dizi,strlen(dizi)); }

for(int i=0;i<7;i++)
cout<<dizi[i];

return 0; Çıktı:
}

//Fonksiyon Argümanı olarak karakter Katarları //DEVAMI


//Fonksiyon, her karaktere sırayla erişerek
karakter katarını ekrana yazacak void Goster(char* m)
#include <iostream> {
using namespace std; while (*m) // Sıradaki adresteki değer 0
kodlu '\0' karakteri olana kadar tekrarla
void Goster(char*); {
cout << *m++; // Sıradaki adresteki
int main() değeri ekrana yaz, sonra adresi arttır
{ }
char metin[] = "merhaba"; cout << endl;
Goster(metin); //metin dizi adresi fonksiyonu }
çağırırken argüman olarak kullanıldı
return 0;
}
Çıktı:

5
// konu :işaretçi ile dinamik hafıza //DEVAMI
kullanımı(new, delete) int main()
{
#include <iostream> Dersler *ogrenci;
using namespace std; ogrenci = new Dersler; //temiz bir hafıza alanı
ayırıyoruz
struct Notlar
{ ogrenci->puan.vize=90; //(*ayse).puan.vize= 90;
int vize; şeklinde de yazabiliriz
};
cout<<"ogrenci ismini giriniz : ";
struct Dersler cin>> ogrenci->ogrenci_isim;
{
char ogrenci_isim[10]; cout<<"ogrencinin adi : "<<ogrenci->ogrenci_isim<<endl;
struct Notlar puan; cout<<"vizesi : "<<ogrenci->puan.vize<<endl;
};
delete ogrenci; //ayrılan hafızayı siliyoruz (Aslında
işaretçiyi siliyoruz)

return 0;
}

You might also like