Dersler

View on GitHub

EEM-120 Algoritma ve Programlama II Dersi

2022-2023 Bahar Dönemi Konu 6

Dinamik Bellek Tahsisi

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    
    int *p;
    int a=20;
    
    //heap bellek bolgesi
    p = (int*)malloc(4);
    *p=10;
    printf("%u\n",p);
    printf("%d\n",*p);
    
    //stack bellek bolgesi
    p=&a;
    printf("%u\n",p);
    printf("%d\n",*p);
    
    return 0;
}
3925096592
10
4060758396
20
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    
    int *p;
    int a=20;
    
    //heap bellek bolgesi
    p = (int*)malloc(sizeof(int));
    
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    *p=10;
    printf("%u\n",p);
    printf("%d\n",*p);
    
    //stack bellek bolgesi
    p=&a;
    printf("%u\n",p);
    printf("%d\n",*p);
    
    return 0;
}
3999324304
10
4136036428
20
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    
    int *p;
    int a=20;
    
    //heap bellek bolgesi
    p = (int*)malloc(sizeof(int));
    
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    if(!p){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    if(p!=NULL){
       //program calisma kodlari
    }
    
    if(p){
        //program calisma kodlari
    }
    
    return 0;
}
3999324304
10
4136036428
20
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
    
    char *p;
    
    p = (char*)malloc(40*sizeof(char));
    
    if(!p){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    strcpy(p, "Programlama");
    
    printf("%s",p);
    
    free(p);
    
    return 0;
}
Programlama
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* metin_oku(void){
    char *str;
    
    printf("bir metin giriniz: ");
    
    if((str=malloc(40*sizeof(char)))==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    scanf("%s",str);
    return str;
}

int main(int argc, char *argv[]) {
    
    char *x;
    x=metin_oku();
    printf("fonksiyondan girilen metin: %s", x);
    
    free(x);
    
    return 0;
}
bir metin giriniz: 

 bir_metin


fonksiyondan girilen metin: bir_metin
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[]) {
    int n, i, *p;
    
    printf("kac tane veri girilecek");
    scanf("%d",&n);
    
    p=(int*)malloc(n*sizeof(int));
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    printf("%d tane sayı giriniz: \n",n);
    for(i=0;i<n;i++)
        scanf("%d",&p[i]);
    
    printf("Girilen %d tane sayı:  \n",n);
    for(i=0;i<n;i++)
        printf("%d ",p[i]);
    
    
    free(p);
    
    return 0;
}
kac tane veri girilecek

 5


5 tane sayı giriniz: 


 1
 2
 3
 4
 5


Girilen 5 tane sayı:  
1 2 3 4 5 
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int n, i, *p;
    
    printf("kac tane veri girilecek");
    scanf("%d",&n);
    
    p=(int*)calloc(n,sizeof(int));
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    printf("%d tane sayı giriniz: \n",n);
    for(i=0;i<n;i++)
        scanf("%d",&p[i]);
    
    printf("Girilen %d tane sayı:  \n",n);
    for(i=0;i<n;i++)
        printf("%d ",p[i]);
    
    
    free(p);
    
    return 0;
}
kac tane veri girilecek

 5


5 tane sayı giriniz: 


 10
 20
 30
 40
 50


Girilen 5 tane sayı:  
10 20 30 40 50 
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int n, i, *p;
    
    printf("kac tane veri girilecek");
    scanf("%d",&n);
    
    p=(int*)calloc(n,sizeof(int));
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    printf("%d tane sayı giriniz: \n",n);
    for(i=0;i<n;i++)
        scanf("%d",&p[i]);
    
    printf("Girilen %d tane sayı:  \n",n);
    for(i=0;i<n;i++)
        printf("%d ",p[i]);
    
    
    printf("Yeni veri sayisini giriniz: ");
    scanf("%d",&n);
    
    p=realloc(p,n*sizeof(int));
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    printf("%d tane sayı giriniz: \n",n);
    for(i=0;i<n;i++)
        scanf("%d",&p[i]);
    
    printf("Girilen %d tane sayı:  \n",n);
    for(i=0;i<n;i++)
        printf("%d ",p[i]);
    
    
    
    free(p);
    
    return 0;
}
kac tane veri girilecek

 3


3 tane sayı giriniz: 


 2
 4
 6


Girilen 3 tane sayı:  
2 4 6 Yeni veri sayisini giriniz: 

 6


6 tane sayı giriniz: 


 1
 2
 3
 4
 5
 6


Girilen 6 tane sayı:  
1 2 3 4 5 6 
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[]) {
    int n, i, *p, n1;
    
    printf("kac tane veri girilecek");
    scanf("%d",&n);
    
    p=(int*)malloc(n*sizeof(int));
    if(p==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    printf("%d tane sayı giriniz: \n",n);
    for(i=0;i<n;i++)
        scanf("%d",(p+i));
    
    printf("Girilen %d tane sayı:  \n",n);
    for(i=0;i<n;i++)
        printf("%d ",*(p+i));
    
    printf("Yeni veri girilecek mi? girilece veri sayisini giriniz:");
    scanf("%d",&n1);
    p=(int*)realloc(p,(n+n1)*sizeof(int));
    
    for(i=n;i<n+n1;i++)
        scanf("%d",(p+i));
    
    printf("Dizinin son hali:  \n");
    for(i=0;i<n+n1;i++)
        printf("%d ",*(p+i));
        
    
    
    
    free(p);
    
    return 0;
}
kac tane veri girilecek

 3


3 tane sayı giriniz: 


 1
 2
 3


Girilen 3 tane sayı:  
1 2 3 Yeni veri girilecek mi? girilece veri sayisini giriniz:

 4
 4
 5
 6
 7


Dizinin son hali:  
1 2 3 4 5 6 7 
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[]) {
    
    int *p, *q;
    p=malloc(40);
    q=malloc(50);
    
    //burada baska kodlamalar olsun
    p=q;
    //burada baska kodlamalar olsun
    free(p);
    free(q);
    
    return 0;
}
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[]) {
    
    int *p, *q;
    p=malloc(40);
    q=malloc(50);
    
    //burada baska kodlamalar olsun
    free(p);
    p=q;
    //burada baska kodlamalar olsun
    free(p);
    free(q);
    
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(int argc, char *argv[]) {
    
    char *p[5];
    int i;
    
    for(i=0;i<5;i++){
        p[i]=(char*)malloc(20*sizeof(char));
        if(p[i]==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
        }
    }
    
    for(i=0;i<5;i++)
        strcpy(p[i], "metin");
    
    for(i=0;i<5;i++)
        printf("%s\n",p[i]);
    
    for(i=0;i<5;i++)
        free(p[i]);
         
    return 0;
}
metin
metin
metin
metin
metin
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    int sicil;
    char isim[50];
    float maas;
} Calisan;


int main(int argc, char *argv[]) {
    
    Calisan *p_calisan;
    p_calisan=(Calisan*)malloc(sizeof(Calisan));
    if(p_calisan==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    p_calisan->sicil=10;
    strcpy(p_calisan->isim, "isim soyisim");
    p_calisan->maas=15000;
    
    printf("Calisan sicil no: %d\n", p_calisan->sicil);
    printf("Calisan maas no: %f\n", p_calisan->maas);
    printf("Calisan isim no: %s\n", p_calisan->isim);
    
    
    free(p_calisan);  
    return 0;
}
Calisan sicil no: 10
Calisan maas no: 15000.000000
Calisan isim no: isim soyisim
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    int sicil;
    char isim[50];
    float maas;
} Calisan;


Calisan* kisi_olustur(void){
    Calisan *p_calisan;
    p_calisan=(Calisan*)malloc(sizeof(Calisan));
    if(p_calisan==NULL){
        printf("Bellekte yer ayrilamadi.");
        exit(1);
    }
    
    p_calisan->sicil=10;
    strcpy(p_calisan->isim, "isim soyisim");
    p_calisan->maas=15000;
    
    return p_calisan;
    
}


int main(int argc, char *argv[]) {
    
    Calisan *p;
    
    p=kisi_olustur();
    
    printf("Calisan sicil no: %d\n", p->sicil);
    printf("Calisan maas no: %f\n", p->maas);
    printf("Calisan isim no: %s\n", p->isim);
    
    free(p);
         
    return 0;
}
Calisan sicil no: 10
Calisan maas no: 15000.000000
Calisan isim no: isim soyisim