Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Pointer

Başlatan robikod, 22 Nisan 2016, 00:16:40

robikod

Bu kodu çalıştırdığım zaman program .exe hatası veriyor nerede hata var acaba ?

#include<stdio.h>


void yerdegistir(int *a, int *b)

{
	int *gecici;
	*gecici=*a;
	*a=*b;
	*b=*gecici;
	
	
	
	
}

main()

{
	int a=3,b=5;
	printf("a ve b degerleri baslangicta: %d %d",a,b);
	yerdegistir(&a,&b);
	printf("a ve b degerleri degisim: %d %d",a,b);
	
	
}

robikod

Ona dikkat etmemişim çok teşekkür ederim.

Firzen

Alıntı yapılan: gerbay - 22 Nisan 2016, 00:39:38
void yerdegistir(int *a, int *b)
{
	int *gecici;
	*gecici = *a;
	*a = *b;
	*b = *gecici;
}


bu fonksiyonda "gecici" adında bir pointer ınız var ama pointer a adres atanmamış. her hangi bir yeri işaret ediyor.. daha doğrusu stack pointer ın işaret ettiği bölgedeki bir çöp değeri adres olarak kullanıyor.. bazı derleyiciler debug mode da "gecici" pointerına adres olarak 0xcccccccc ataması yapar.. o adrese de erişim yetkiniz yok..

bu fonksiyonun doğru şu şekilde olmalı;

void yerdegistir(int *a, int *b)
{
	int gecici;
	gecici = *a;
	*a = *b;
	*b = gecici;
}


Hocam kodun *a = *b; kısmı *a = &b; şeklinde olması gerekmez mi pointerda adres belirtirken buna dikkat ediyorduk diye hatırlıyorum yanlışda biliyor olabilirim.
Kararsız...