이중포인터를 사용한 함수에 대해서 질문합니다,
오나미
질문 제목 : 이중포인터를 함수에 쓰여질대 잘 이해가 안돼서 질문드리옴니다.질문 내용 :
#include stdio.h
void maxmin(int *, int, int **, int **);
int main(void)
{
int *maxptr; // 포인터변수 maxptr 선언
int *minptr; // 포인터변수 minptr 선언
int arr[5];
int i;
for(i=0; i5; i++)
{
printf(정수 입력 %d: , i+1);
scanf(%d, &arr[i]);
}
maxmin(arr, sizeof(arr)/sizeof(int), &maxptr, &minptr); // 함수호출(포인터변수 maxptr와 minptr 의 주소값을전달인자로)
printf(최대 : %d, 최소 : %d \n, *maxptr, *minptr); // 출력
return 0;
}
void maxmin(int *arr, int size, int **mxp, int **mnp) //전달인자 maxptr와 minptr의 주소값을
{ 이중포인터로 매개변수 선언
int *max, *min; //함수내의 포인터변수 max, min
int i;
max=min=&arr[0];
for(i=0; isize; i++)
{
if(*maxarr[i]) //최대값 구하는 if 문
max=&arr[i]; //최대값의 주소값을 포인트변수 max에 대입
if(*minarr[i]) //최소값 구하는 if 문
max=&arr[i]; //최소값의 주소값을 포인트변수 min에 대입
}
*mxp=max; // 이중포인터변수 mxp에max의 주소값을 대입??????
*mnp=min; // 이중포인터변수 mnp에mix의 주소값을 대입??????
}
우선적으로 빨간부분이 이해가 되지 않습니다.
분명 이중포인터는 싱글포인터의 주소값을 가리킨다고 배웠습니다.
int a;
int *b=&a;
int **c=&b;
c - b - a
제 생각에는 빨간색으로 표시된 부분을 보면 분명 이중포인터변수에 주소값을 대입해주는것 같은데...
왜 출력할때 그냥 포인터변수를 사용하는지 모르겠습니다.
또한 보면은 b - c - a 와 같이 포인터변수가 이중포인터를 가리키는것 같습니다.(모순)
이를 좀더 잘 알기위해서 이와같이 코딩을 해보았습니다.
#include stdio.h
void icrazy(int *,int **, int **);
int main(void)
{
int num[2]={10,20};
int *ap;
int *bp;
icrazy(&num, &ap, &bp);
printf(%d %d \n, *ap,*bp);
return 0;
}
void icrazy(int *n,int **a, int **b)
{
int *ga;
int *ha;
ga=&n[0];
ha=&n[1];
*a=ga;
*b=ha;
}
이러나 저러나 빨간부분이 전혀 이해되질 않습니다.
이부분에서 많이 아시는분은 도움을 주시길 바랍니다.,,
-
황소자리 2024-06-28
그래서 최대변수의 주소값이 담긴 max를 *mxp에 넣고 min를 *mnp에 넣는 것입니다.
글로 설명하려니 어렵네요.... 그림으로 하면 훨씬 이해하기 쉬우실텐데 하나하나 그려놓고 생각해보시면 됩니다. -
연체리 2024-06-28
즉 이 함수가 콜 되면 매개변수가 선언이 되어 mxp-maxptr-아직 안정해진 int max 변수
mnp-minptr-아직 안 정해진 int min변수
이 순서대로 가리키게 됩니다. 그래서 maxmin 함수에서 전달받은 배열의 변수의 주소값을 받기 위해 싱글포인터를 선언해서 최대값의 주소 최소값의 주소를 각각 담겨있게 됩니다. 그래서 메인함수에 있는 maxptr이 최대변수를 가리키게 minptr이 최소변수를 가리킬려면 그 각각 변수의 주소값이 -
해솔 2024-06-28
먼저 이중포인터는 싱글포인터를 가리키는 즉 싱글포인터의 주소값을 담을 수 있는 변수입니다. 포인터를 사용하는 이유는 그 변수 안에 있는 데이터를 조작하기 위해서인데 int 형 변수를 조작하기 위해서는 int 형 변수의 주소를 담을 수 있는 int 포인터가 필요하고 마찬가지로 int 포인터를 조작하기 위해서는 int 더블포인터가 필요합니다. int 싱글포인터를 조작한다는 것은 포인터 안에 있는 주소값을 조작할 수 있는 즉 이 포인터가 무슨 변수를 가리킬
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2660033 | 문법 오류.. 좀 찾아주세요 ㅜ..For문 (3) | 연하얀 | 2024-06-30 |
2660008 | 포인터랑 함수랑 구조체를 사용해서 프로그램 만드러야 되는데 안되네요... | 이거이름임 | 2024-06-30 |
2659929 | 이 소스들이 정말 이해가 되질 않습니다..ㅠㅠㅠ(help) | Hotpants | 2024-06-29 |
2659850 | 완전초보.. (1) | 요루 | 2024-06-29 |
2659794 | 교재 추천좀 해주세요 | 창민 | 2024-06-28 |
2659770 | 이중포인터를 사용한 함수에 대해서 질문합니다, (3) | 오나미 | 2024-06-28 |
2659715 | (초보용)led 순차점등에 대해서 질문드립니다 ,,( pic16F877A) (3) | 큰재 | 2024-06-27 |
2659684 | 계좌관리 프로그램인데요 잘 안되서요ㅠ (4) | 사에 | 2024-06-27 |
2659628 | 비트논리연산자 | 아연 | 2024-06-27 |
2659606 | 한글이 깨져요;; (2) | 이슬비 | 2024-06-26 |
2659579 | Visual C++ 질문있습니다 ! (초급) | 오나미 | 2024-06-26 |
2659527 | 소스한번 봐주세요..ㅜ (1) | 민트맛캔디 | 2024-06-26 |
2659495 | c언어 실행법에 대해서..급..해여 (1) | 마루한 | 2024-06-25 |
2659439 | 저 이것좀 (4) | 개랑 | 2024-06-25 |
2659384 | 진짜 모르겠어요. (10) | 희나리 | 2024-06-24 |
2659357 | 죄송합니다. 이해가 안되서. (1) | 곰돌곰돌 | 2024-06-24 |
2659335 | 구조체 문제 질문합니다 !!!!!!!!!!!!!!!!!!!!!! ㅜㅜ | 황소숨 | 2024-06-24 |
2659277 | c언어 용도와 사용 (1) | 역곡중 | 2024-06-23 |
2659201 | 리눅스 gcc 컴파일 도중에 에러로 질문드려요~ (7) | 환찬 | 2024-06-23 |
2659177 | ★ 질문 입니다ㅠ (4) | 에드워드 | 2024-06-22 |