Dersler

View on GitHub

EEM-120 Algoritma ve Programlama II Dersi

İşaretçi aritmetiği

#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10};
    printf("a[0]: %u\n", &a[0]);
    printf("a: %u\n", a);
    printf("*a: %u\n", *a);
    printf("a+1: %u\n", a+1);
    printf("a+3: %u\n", a+3);
    printf("a+30: %u\n", a+30);
    return 0;}
a[0]: 3446333856
a: 3446333856
*a: 2
a+1: 3446333860
a+3: 3446333868
a+30: 3446333976
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10};
    int *p;
    p=&a[0];
    
    printf("p: %u\n", p);
    printf("*p: %u\n", *p);
    
    printf("(p+2): %u\n", p+2);
    printf("*(p+2): %u\n", *(p+2));
    
    printf("*p: %u\n", *p);
    printf("*p+3: %u\n", *p+3);
    return 0;}
p: 3689394928
*p: 2
(p+2): 3689394936
*(p+2): 6
*p: 2
*p+3: 5
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10};
    int *p;
    p=a;
    printf("p: %u\n", p);
    printf("*p: %u\n", *p);
    
    p++;
    printf("(p+2): %u\n", p+2);
    printf("*(p+2): %u\n", *(p+2));
    
    p=p+3;
    printf("*p: %u\n", *p);
    printf("*p+3: %u\n", *p+3);
    
    p--;
    printf("p: %u\n", p);
    printf("*p+5: %u\n", *p+5);
    
    return 0;}
p: 3767688832
*p: 2
(p+2): 3767688844
*(p+2): 8
*p: 10
*p+3: 13
p: 3767688844
*p+5: 13
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10,12,14,16,18,20};
    int *p;
    p=&a[5];
    printf("p: %u\n", p);
    printf("*p: %u\n", *p);
    
    p=p-3;
    printf("(p+2): %u\n", p+2);
    printf("*(p+2): %u\n", *(p+2));
    
    p=p+4;
    printf("(p+2): %u\n", p+2);
    printf("*(p+2): %u\n", *(p+2));
    
    
    return 0;}
p: 3427837268
*p: 12
(p+2): 3427837264
*(p+2): 10
(p+2): 3427837280
*(p+2): 18
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10,12,14,16,18,20};
    int *p,*q;
    p=a;
    q=&a[2];
    printf("p==q: %u\n", p==q);
    printf("p>q: %u\n", p>q);
    printf("p<q: %u\n", p<q);
    
    return 0;}
p==q: 0
p>q: 0
p<q: 1
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10,12,14,16,18,20};
    int *p;
    int boyut;
    boyut=sizeof(a)/sizeof(int);
    
    for(p=a; p<a+boyut; p++)
        printf("%d ",*p);
    
    return 0;}
2 4 6 8 10 12 14 16 18 20 
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10,12,14,16,18,20};
    int *p;
    int boyut;
    int toplam=0;
    boyut=sizeof(a)/sizeof(int);
    
    for(p=a; p<a+boyut; p++)
        toplam += *p;
    printf("dizinin elemanlarinin toplami: %d\n", toplam);
    
    toplam=0;
    for(p=a; p <= &a[9]; p++)
        toplam += *p;
    printf("dizinin elemanlarinin toplami: %d", toplam);
    
    return 0;}
dizinin elemanlarinin toplami: 110
dizinin elemanlarinin toplami: 110
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10,12,14,16,18,20};
    int *p;
    int boyut,i;
    boyut=sizeof(a)/sizeof(int);
    
    for(p=a+boyut-3; p>=a; p--)
        *(p+2)=*p;
    
    for(i=0;i<boyut;i++)
        printf("%d ",*(a+i));
    return 0;}
2 4 2 4 6 8 10 12 14 16 
#include <stdio.h>
int main() {
    int a[]={2,4,6,8,10,12,14,16,18,20};
    int *p;
    int boyut,i;
    boyut=sizeof(a)/sizeof(int);
    
    for(p=a+boyut-3; p>=a; p--)
        *(p+2)=*p;
    
    for(i=0;i<boyut;i++)
        printf("%d ",*(a+i));
    return 0;}
2 4 2 4 6 8 10 12 14 16 
#include <stdio.h>
#define N 10
int main() {
  int a[10]={2,4,6,8,10,12,14,20};
  int i=2;
  a[i++]=100;
  
  for(i=0;i<N;i++)
    printf("%d ",a[i]);
  printf("\n");
  
  i=5;
  a[++i]=200;
  for(i=0;i<N;i++)
    printf("%d ",a[i]);
  return 0;
}
2 4 100 8 10 12 14 20 0 0 
2 4 100 8 10 12 200 20 0 0 
#include <stdio.h>
#define N 10
int main() {
  int a[N]={2,4,6,8,10,12,14,20};
  int *p;

  p=&a[3];
  printf("*p: %d\n",*p);

  printf("*p++: %d\n",*p++);
  printf("*p: %d\n",*p);

  printf("(*p)++: %d\n",(*p)++);
  printf("*p: %d\n",*p);

  printf("*++p: %d\n",*++p);
  printf("*p: %d\n",*p);

  printf("++*p: %d\n",++*p);
  printf("*p: %d\n",*p);

  for(p=a;p<a+N;p++)
    printf("%d ",*p);

  printf("\n");
  p=a;
  while(p< a+N)
    printf("%d ",*p++);
  return 0;
}
*p: 8
*p++: 8
*p: 10
(*p)++: 10
*p: 11
*++p: 12
*p: 12
++*p: 13
*p: 13
2 4 6 8 11 13 14 20 0 0 
2 4 6 8 11 13 14 20 0 0 
#include <stdio.h>
#define N 10
int main() {
  int a[10]={2,4,6,8,10,12,14,20};
  int i, *p;
  for(i=0;i<N;i++)
    printf("%d ",a[i]);

  printf("\n");
  for(i=N-1;i>=0;i--)
    printf("%d ",a[i]);

  printf("\n");
  for(p=a;p<a+N;p++)
    printf("%d ",*p);

  printf("\n");
  for(p=a+N-1;p>=a;p--)
    printf("%d ",*p);
  return 0; 
}
2 4 6 8 10 12 14 20 0 0 
0 0 20 14 12 10 8 6 4 2 
2 4 6 8 10 12 14 20 0 0 
0 0 20 14 12 10 8 6 4 2 
#include <stdio.h>
int eb(int a[], int boyut){
  int maks,i;
  maks=a[0];
  for(i=1;i<boyut;i++)
    if(a[i]>maks)
      maks=a[i];
  return maks;
}
int main() {
  int a[]={2,4,6,8,10,500,14,20,100,200,20};
  int n;
  n=sizeof(a)/sizeof(int);
  printf("en buyuk eleman: %d", eb(a, n));
  return 0;
}
en buyuk eleman: 500
#include <stdio.h>

int eb(int x[], int boyut){
  int maks,*p;
  maks=*x;
  for(p=x+1;p<x+boyut;p++)
    if(*p>maks)
      maks=*p;
  return maks;
}
int main() {
  int a[]={2,4,6,8,10,500,14,20,100,200,20};
  int n;
  n=sizeof(a)/sizeof(int);
  printf("en buyuk eleman: %d", eb(a, n));
  return 0;  
}
en buyuk eleman: 500
#include <stdio.h>
int eb(int *x, int boyut){
  int maks,*p;
  maks=*x;
  for(p=x+1;p<x+boyut;p++)
    if(*p>maks)
      maks=*p;
  return maks;
}
int main() {
  int a[]={2,4,6,8,10,500,14,20,100,200,20};
  int n;
  n=sizeof(a)/sizeof(int);
  printf("en buyuk eleman: %d", eb(a, n));
  return 0;  
}
#include <stdio.h>
void temizle(int *x, int n){
  int *p;
  for(p=x;p<x+n;p++)
    *p=0;
}
int main() {
  int a[]={2,4,6,8,10,500,14,20,100,200,20};
  int n, *isaretci;
  n=sizeof(a)/sizeof(int);

  for(isaretci=a; isaretci<a+n;isaretci++)
    printf("%d ", *isaretci);
  printf("\n");
  temizle(a, n);
  for(isaretci=a; isaretci<a+n;isaretci++)
    printf("%d ", *isaretci);
  return 0;  
}
2 4 6 8 10 500 14 20 100 200 20 
0 0 0 0 0 0 0 0 0 0 0 
#include <stdio.h>
#define N 10
int main() {
  int a[N]={2,4,6,8,10,500};
  int toplam=0, *p, i;
  p=a;
  for(i=0;i<N;i++)
    toplam += p[i];
  printf("toplam1: %d\n",toplam);

  toplam=0;
  for(i=0;i<N;i++)
    toplam += *(p+i);
  printf("toplam2: %d\n",toplam);
  return 0;  
}
toplam1: 530
toplam2: 530
#include <stdio.h>
int main() {           
  int a[2][3]={{2,  4,  6},
         {8, 10, 12}};
  int i, j;
  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%3d ",a[i][j]);
    printf("\n");
  }
  return 0;  
}
  2   4   6 
  8  10  12 
#include <stdio.h>
int main() {
  int a[2][3]={{2,  4,  6},
         {8, 10, 12}};
  int i, j;
  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%3d ",a[i][j]);
    printf("\n");
  }
  printf("\n");
  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%u ",&a[i][j]);
    printf("\n");
  }
  return 0;  
}
  2   4   6 
  8  10  12 

3570918592 3570918596 3570918600 
3570918604 3570918608 3570918612 
#include <stdio.h>
int main() {
  int a[2][3]={{2,  4,  6},
         {8, 10, 12}};
  int i, j, *p;
  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%3d ",a[i][j]);
    printf("\n");
  }
  printf("\n");
  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%u ",&a[i][j]);
    printf("\n");
  }
    
  printf("\n");
  for(p=&a[0][0];p<&a[0][0]+6;p++)
    printf("%d ",*p);
  
    printf("\n");
  for(p=&a[0][0];p<=&a[1][2];p++)
    printf("%d ",*p);
  return 0;  
}
  2   4   6 
  8  10  12 

3365770016 3365770020 3365770024 
3365770028 3365770032 3365770036 

2 4 6 8 10 12 
2 4 6 8 10 12 
#include <stdio.h>
int main() {
  int a[2][3]={{2,  4,  6},
         {8, 10, 12}};

  printf("a: %u\n",a);
  printf("a: %u",a+1); 
  return 0;  
}
a: 4086037488
a: 4086037500
#include <stdio.h>
int main() {
  int a[2][3]={{2,  4,  6},
         {8, 10, 12}};
  int i, j;
  for(i=0;i<2;i++)
    for(j=0;j<3;j++)
      a[i][j]=0;

  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%d ", a[i][j]);
    printf("\n");
  }
  return 0;  
}
0 0 0 
0 0 0 
#include <stdio.h>
int main() {
  int a[2][3]={{2,  4,  6},
         {8, 10, 12}};
  int i, j;
  int *p;
  for(p=&a[0][0];p<=&a[1][2];p++)
      *p=0;

  for(i=0;i<2;i++){
    for(j=0;j<3;j++)
      printf("%d ", a[i][j]);
    printf("\n");
  }  
  return 0;  
}
0 0 0 
0 0 0 
#include <stdio.h>
int eb(int x[][3], int n){
  int i, j;
  int maks;
  maks=x[0][0];
  for(i=0;i<n;i++){
    for(j=0;j<3;j++)
      if(x[i][j]>maks)
        maks=x[i][j];
  }
  return maks;
}
int main() {
  int a[2][3]={{2,  4,  30},
         {8, 10, 25}};
  int en_buyuk;
  en_buyuk=eb(a, 2);
  printf("en buyuk: %d",en_buyuk);  
  return 0;  
}
en buyuk: 30
#include <stdio.h>
int eb(int *a, int n){
  int maks, *p;
  maks=*a;
  for(p=a+1; p<a+n;p++){
    if(*p>maks)
      maks=*p;
  }
  return maks;
}
int main() {
  int a[2][3]={{2,  4,  30},
         {8, 40, 25}};
  int en_buyuk;
  en_buyuk=eb(&a[0][0], 6);
  printf("en buyuk: %d",en_buyuk);
  return 0;  
}
en buyuk: 40
#include <stdio.h>
int main() {
int a[2][3]={{2,  4,  30},
         {8, 40, 25}};
  printf("a: %u\n",a);
  printf("a[0]: %u\n",a[0]);
  printf("a[1]: %u\n",a[1]);
  printf("a[0]+1: %u\n",a[0]+1);
  printf("a: %u\n",a+1);  
  return 0;  
}
a: 3779957712
a[0]: 3779957712
a[1]: 3779957724
a[0]+1: 3779957716
a: 3779957724
#include <stdio.h>
int main() {
  int a[2][3]={{2,  4,  16},
             {8, 20, 12}};
  int (*p)[3];
  int *q;

  printf("a: %u\n", a);
  printf("a+1: %u\n", a+1);

  printf("*a: %u\n", *a);
  printf("*(a+1): %u\n", *(a+1));

  printf("**a: %u\n", **a);
  printf("**(a+1): %u\n", **(a+1));

  printf("(*a)[1]: %u\n", (*a)[1]);
  printf("(*(a+1))[2]: %u\n", (*(a+1))[2]);

  p=a;

  printf("p: %u\n", p);
  printf("p+1: %u\n", p+1);

  for(p=a;p<a+2;p++)
    for(q=*p; q<*p+3;q++)
      printf("%d ",*q);
  return 0;
}
a: 3253873936
a+1: 3253873948
*a: 3253873936
*(a+1): 3253873948
**a: 2
**(a+1): 8
(*a)[1]: 4
(*(a+1))[2]: 12
p: 3253873936
p+1: 3253873948
2 4 16 8 20 12