30 Eylül 2013 Pazartesi

Pointerler nerde nasıl kullanılır? Açıklamalı

#include<stdio.h>

int main()
{
   int *p1,*p2;
   int a=8;
   int b=3;
   
   p1=&a; //a'yı p1e b'yi ise p2'ye atıyoruz...
   p2=&b;
   
   printf(" The adress of A = %p and The adress of B = %p\n",p1,p2);
   printf("a=%d ve b=%d\n",a,b);
   *p1+=50;
   *p2+=50; //burada değer ataması yapılır... başında yıldız olduğuna ve %d olarak yazıldığına dikkat edelim
   printf(" The value of A = %d and The value of B = %d\n",*p1,*p2);
    
   
   p1=p1+100;
   p2=p2+100;
   printf(" The adress of A = %p and The adress of B = %p\n",p1,p2);//burada ise adres değişikliği yapılır. başında yıldız olmadığına ve %p ile yazdılığına dikkat et..
   printf(" The value of A = %d and The value of B = %d\n",*p1,*p2);// bellekte kayar olmayan bir yere gider 
    printf("a=%d ve b=%d\n",a,b); //değerler doğrudan yazdrıldığı zaman aynı kalır. bellekte tutulur.
   
   p1++; p2--;
   printf(" The adress of A = %p and The adress of B = %p\n",p1,p2);
   system("pause");
}
// çarpma ve bölme işlemleri pointersler için geçerli değildir. pointersler işaret ettikleri değişken tipinde olmak zorundadırlar.
//ekleme ve çıkarma yapılabilir. 

3 sayıdan en küçüğünü bulan program

#include<stdio.h>
int mini(int,int,int);
int main()
{
    int a,b,c;
    int sonuc;
    printf("3 sayi giriniz \n");
    scanf("%d%d%d",&a,&b,&c);
    
    sonuc=mini(a,b,c);
    printf("Girdiginiz sayilardan en kucugu = %d\n",sonuc);
    system("pause");
}
int mini(int x,int y,int z)
{
    int min;
    min=x;
    if(y<x)
    return y;
    if(z<x)
    return z;
    else
    return x;
}

29 Eylül 2013 Pazar

Call by value ve call by references (pointer ile)

#include<stdio.h>
int f1(int,int);
int f2(int *,int *);

int main()
{
    int a=5;
    int b=7;
    int *p1,*p2;
    p1=&a;
    p2=&b;
    
    f1(a,b);
    printf("a=%d ve b=%d",a,b);
    
    f2(p1,p2);
    printf("a=%d ve b=%d",a,b); //burada pointers call by value yöntemi ile çağrılmış unutma reference deil   
 system("pause");
}
int f1(int m,int n) //call by value
{
    m=m+30;
    n=n+30;
}
int f2(int *p1,int *p2) //call by reference
{
    *p1=*p1+30;
    *p2=*p2+30;
}

Pointer kullanarak dizi eleman toplamı

#include<stdio.h> //pointers and arrays can bu used exchanging
int sumpointer(int *);

int main()
{
    int d[]={5,10,15,20};
    int *p;
    int i,n;
    n=sizeof (d) / sizeof (int);
    p=d; 
    i=0;
    while(i<n)
    {
              
              printf("a[%d]=%d\n",i,*p);
              i++;
              p++;
              }
              printf("sum=%d\n",sumpointer(d));
              system("pause");
              }
int sumpointer(int *p)
{
    int sum,i;
    sum=0;
    for(i=0;i<4;i++)
    {
                    sum=sum+*p;
                    p++;
                    }
                    return sum;
                    }

28 Eylül 2013 Cumartesi

Girilen sayının tek mi çift mi olduğunu bulan program

#include<stdio.h>
int main()
{
    int a;
    printf("Bir sayi giriniz :");
    scanf("%d",&a);
    
    
    if (a%2==0) { printf("\n %d cift sayidir ",a); }
    
    if (a%2==1) { printf("\n %d tek sayidir ",a); }
    
    
    system("pause");
}

Pointer kullanarak Dizi oluşturma

#include<stdio.h> //pointers and arrays can bu used exchanging

int main()
{
    int d[]={5,10,15,20};
    int *p;
    int i,n;
    n=sizeof (d) / sizeof (int);
    p=d; //array can bu assingned directly to a pointer variable
    i=0;
    while(i<n)
    {
              
              printf("a[%d]=%d\n",i,*p);
              i++;
              p++;
              }
              system("pause");
              }

27 Eylül 2013 Cuma

Satır sayısı girerek üçgen piramit oluşturma

#include<stdio.h>
int main()
{
    int i,j,x,k;
    printf("\n Piramit icin satir sayisini giriniz : \n");
    scanf("%d",&x); 
    for(i=1; i<=x; i=i+1)
            {
                printf("\n");
                for(j=1; j<=x-i; j=j+1) 
                
                printf(" ");
                              
                
                for(k=1; k<=i+i-1; k=k+1) 
                 printf("*"); }
                
                system("pause");
                
}

11 ve katlarını veren çarpma işlemi

#include<stdio.h>
void main()

     float i,t=1;
     for(i=2; i<=9; i=i+1)
     {
              printf("\n %.0f X 9 + %.0f=%.0f",t,i,t*9+i);
              t=t*10+i;
              }
              system("pause");
              }

26 Eylül 2013 Perşembe

Karmaşık Çarpma işlemi

#include<stdio.h>
void main()

     float i;
     for(i=1; i<=11111111; i=(i*10)+1)
     {
              printf("\n %.0f X %.0f=%.0f",i,i,i*i);
              }
              system("pause");
              }

Satır ve sütun sayısı girerek kare oluşturma

#include<stdio.h>
int main()
{
    int satir,sutun,x,y;
    printf("\n Kare icin satir sayisini giriniz : \n");
    scanf("%d",&x);
    printf("\n Kare icin sutun sayisini giriniz : \n");
    scanf("%d",&y);
    
    for(satir=1;  satir<=x; satir++)
    {
              printf("\n");
                  for(sutun=1; sutun<=y; sutun++)
                  printf("*");
                
                }
                system("pause");
                }