[C] 포인터의 위치를 비교할수 있나요?
핫와인
2023.04.01
#include stdio.h
#define MAX 10
bool cross(int *dp, int *up){ // 이부분에서 dp와 up가 교차하게되면 false 를 리턴하게 하고 싶습니다.
return up = dp;
}
void swap(int *dp, int *up){
int *temp;
*temp = *dp;
*dp = *up;
*up = *temp;
}void main(){
int ar[MAX] = {1, 5, 10, 14, 8, 6, 4, 3, 9, 7};
int i, pivot, *dp, *up;
pivot = ar[MAX];
dp = ar;
up = ar + MAX -1;
while(cross(dp, up)){
while(*dp = pivot)
dp++;
while(*up = pivot)
up--;
swap(dp, up);
}
swap(up, &pivot);
for(i = 0; i MAX; i++)
printf(%5d , ar[i]);
printf(\n);
}
-
귀염포텐
pivot = ar[MAX]; 인트형변수에 정의 되지 않은 배열에 범위밖을 넣는다는건 위험한일입니다.
포인터들에 연산들중 비교를 하는것도 안전하지못한 방법입니다. 시스템에따라 다르기때문입니다....