Wrote a simple swap program, works well; But gives a Segmentation Fault after printing everything.
#include
void swap(int* p1,i
int* temp;
*temp = *p1;
is undefined behaviour in C and C++ as you are using an uninitialised pointer. (At the point of use, a pointer must always point to memory that you own, and your pointer isn't).
Use int temp; temp = *p1;
instead, or better still, int temp = *p1;
This should work:
(temp
is a normal int
! Otherwise your using a uninitialized pointer which is undefined behaviour)
#include <stdio.h>
void swap(int* p1,int* p2){
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(){
int a = 9, b = 8;
printf("%d %d \n",a,b);
swap(&a, &b);
printf("%d %d \n",a,b);
return 0;
}