버블 정렬 질문이요
튼동
#include stdio.h
void dessort(int* n);
int main(void)
{
int arr[7];
int a;
for(a=0;a7;a++)
{
printf(enter numbers);
scanf(%d,&arr[a]);
}
dessort(&arr);
return 0;
}
void dessort(int* n)
{
int i,k,temp;
for(i=6;i0;i--)
{
for(k=6;k6-i;k--)
{
if(n[k]n[k-1])
{
temp=n[k];
n[k]=n[k-1];
n[k-1]=temp;
}
}
}
for(i=0;i7;i++)
printf(%d,n[i]);
}
질문의 요지는 이것
메인함수 함수 출력문에서 dessort(&arr) -이게 arr주소값을 n포인터 가 그대로 받는게 내머리 디버깅인데요
이게 맞나요?//워링이 2개 뜹니다.
&연산자를 삭제해도 값이 나오긴 합니다. 이건 워링이 안떠요..
&연산자이것을 언제 붙이고 안붙이고 아직 감이 안오는데 결론내리신분이 있으면 답변좀...굽실굽실..
-
처녀자리
고맙습니다
-
탄성
그리고
arr[0]은 *(arr+0)이고 *arr이 됩니다.
arr[1]은 *(arr+1)이 됩니다.
arr[2]은 *(arr+2)이 됩니다.
위에 수다님의 덧글에서는 괄호가 없어서 약간 틀렸습니다. -
아이돌
dessort(&arr);
이게 아니고
dessort(arr);
이것이 맞습니다.
배열의 이름 자체가 배열이 시작하는 주소가 됩니다.
arr은 &arr[0]가 되는 것입니다. -
그린나래
arr이라는 배열을 이렇게도 쓸수있죠.. *arr,*arr+1,*arr+2 이것은 arr[0],arr[1],arr[2]와 같은 의미 입니다..
그러니까.. arr이라고만 써도 주소가 넘어가게 되어 있습니다..음..에..또..
그 다음은 밑에분이 자세히 설명해주실듯