Çarşamba Şubat 28th, 2018

C – Pointer Ve Arrayler

ile Ebubekir Sezer

Daha önceki yazılarımızda sayıların ve yahutta karakterlerin pointer olarak tanımlandığını gördük , peki arrayler (diziler) pointer olarak tanımlanabilir mi? Evet . Şimdi rastgele bir dizi tanımlasanız ve dizinin içine elemanlar yerleştirseniz bu dizinin elemanlarınız bilgisayarda yer tutması gerekiyor  . Bu durumlarda arrayin içindeki elemanların yerlerini bulmak için yine pointerları kullanacağım.

İlk basit bir program yapacağım. Bir array tanımlayacağım ve sonrasında arrayin içine elemanlar yerleştireceğim daha sonra ise bu elemanların bilgisayarda tuttukları yerleri yani adreslerini ekrana bastıracağım. Kod Dizimi;

#include<stdio.h>
int main(){
	int sayiarrayi[]={1,45,56,192,23};
	// burda herhangi bir yere bu arrayi atadım x ile
	int *x=sayiarrayi;	
	/* burada pointerların yerlerini 3 farklı
	şekilde ekrana basabiliriz ben hepsini
	göstereceğim.*/
	printf("%u\n",x);
	printf("%d\n",*x);
	printf("%d\n",x[0]);
	printf("\n");
		printf("%u\n",x+1);
	printf("%d\n",*(x+1));
	printf("%d\n",x[1]);
	printf("\n");
		printf("%u\n",x+2);
	printf("%d\n",*(x+2));
	printf("%d\n",x[2]);
	printf("\n");
		printf("%u\n",x+3);
	printf("%d\n",*(x+3));
	printf("%d\n",x[3]);
	printf("\n");
		printf("%u\n",x+4);
	printf("%d\n",*(x+4));
	printf("%d\n",x[4]);
	printf("\n");
return 0;
}

Ekran Çıktısı;

6487600
1
1

6487604
45
45

6487608
56
56

6487612
192
192

6487616
23
23

Şimdi yapacağım programda bir array tanımlayıp arrayin boyutunu belirleyeceğim ve daha sonra kullanıcıdan sayılar alacağım. Bir fonksiyon oluşturup , Fonksiyon sayesinde arrayin en büyük değerini bulup ekrana en büyük değeri bastıracağım. Kod Dizimi;

#include<stdio.h>
int maksimumdeger(int sayi[],int uzunluk){
	/* Burada uzunluk tanımladım çünkü
	döngünün arrayle aynı uzunlukta olup 
    en büyük sayıyı bulabilmesi için 
    arrayin içine yazıdığım degeri 
	uzunluk olarak yolladım*/
	
	int max=sayi[0];
	for(int x=1;x<uzunluk;x++){
		if(sayi[x]>max){
			max=sayi[x];
		}
	}
	return max;
}
int main(){
	int sayilar[5];
	for(int i=0;i<5;i++){
		scanf("%d",&sayilar[i]);
	}
	int maksimum=maksimumdeger(sayilar,5);
	// burada arrayi gönderirken uzunluguda gönderdim.
	printf("Sayilar dizisindeki En Buyuk Deger:\n");
	printf("%d",maksimum);
}

Ekran Çıktısı;

14
53
56
45
8
Sayilar dizisindeki En Buyuk Deger:
56

Son olarak da , Yaptığım programda ayları bir array olarak tanımlayıp kullanıcıdan hangi ayı görmesini istediğini soruyor ve daha sonra kullanıcının istediği ayı ekrana bastırıyoruz Kod Dizimi;

#include<stdio.h>
char *aysecme(char *ay[],int uzunluk){
	int aysec;
	printf("Yilin Kacinci Ayini Gormek Istiyorsunuz:");
	scanf("%d",&aysec);
	if(aysec>=1 && aysec<=12){
		return ay[aysec-1];	
	}
	else{
		return NULL;
	}
}
int main(){
	
	char aylar[]={"Ocak","Şubat","Mart","Nisan","Mayis","Haziran","Temmuz","Eylul","Ekim","Kasim","Aralik"};
	char *x=aysecme(aylar, 12);
	if(x==NULL){
		printf("Girdiginiz değer gecersiz");
	}
	else{
		printf("Sectiginiz ay:\n");
		printf("%s",x);
	}
return 0;
}

Ekran Çıktısı;

Yilin Kacinci Ayini Gormek Istiyorsunuz:5
Mayis