포인터에 대한 이해..
한내
#include stdio.h
#include stdlib.h
#include string.h
#define Lenth 20
#define Num 4
int main()
{
char arr1[Lenth];
char arr2[Lenth];
char arr3[Lenth];
char arr4[Lenth];
char* strptr[4] = {arr1,arr2,arr3,arr4};
char* tempptr=strptr[0];
int i=0;
int j=0;
for(i=0;iNum;i++)
{
printf(%d번째문자열 입력 : ,i+1);
gets(strptr[i]);
}
for(i=0;iNum-1;i++)
{
for(j=0;j(Num-i)-1;j++)
{
if(strcmp(strptr[j],strptr[j+1])0)
{
tempptr=strptr[j];
strptr[j]=strptr[j+1];
strptr[j+1]=tempptr[j];
}
}
}
for(i=0;iNum;i++)
{
printf(버블정렬로 정렬된 문자열 : %s \n,strptr[i]);
}
return 0;
}
붉은색으로 표시한 부분말인데요 strptr[j+1]=tempptr[j]; 이렇게 쓰면 오류가 나더라고요.. 앞에 주소지정? &을 붙여야 오류가 않나던데.. strptr[j+1]=&tempptr[j]; 왜 이렇게 해야하는지좀 알려주세요.. 책을 아무리봐도 제가 이해를 못하겠더라고요..
p.s: 방금 생각난건데.. strptr도 1차원 포인터인데 같은 1차원 포인터 tempptr을 가르키라고하니깐 생기는 오류가 아닐까요??
-
물고기자리
포인터 너무 어려운것 같아요ㅠ 동영상 강의 추천좀해주세요ㅠ
-
주리
strptr[j+1]=tempptr[j]; 이 부분에서 strptr[j+1]=tempptr; 이런식으로 바꾸시면 될듯 합니다.
strptr[0~3] 와 tempptr 은 주소값만 가지고 있는 포인트 변수입니다. tempptr[j]를 하시면 포인트 변수의 주소가 아닌 값을 의미합니다. 포인트변수는 주소값만 넣을수 있기때문에 tempptr[j]의 값의 주소인 &tempptr[j] 이걸 쓰셨기 때문에 오류는 나지 않지만 올바른 표현은 strptr[j+1] -
빵야
strptr[j+1]=tempptr; 아닐까요