수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

도저히 모르겠습니다..(배열포인터 관련..)

딥블루

2023.04.01

질문 제목 : 배열 포인터 관련 문제인데 도저히 못풀겠습니다..1) size가 5인 두 배열을 동적으로 할당받고 두 배열의 값(value)를 swap하는 프로그램을 작성하시오.
2) size가 5인 두 배열을 동적으로 할당받고 두 배열의 참조(reference)를 swap하는 프로그램을 작성하시오.질문 내용 : 학교서 자료구조배우는데 c언어 배열과 포인터 동적할당을 리뷰하면서 했을땐 분명 쉬운문제들이었는데.. 질문요약에 있는 두 예제는 도저히 모르겠습니다...
결과값은첫번째 것은
두번째 것은
이런식으로 나와야 합니다.. 제가 첫번째 일단 한것 소스는

#includestdio.h
#includestdlib.h
void swap_value(int *arr1, int *arr2); //swap 함수 선언
void main(){
int arr1[5]={1,2,3,4,5}; // 배열 a 선언
int arr2[5]={11,12,13,14,15}; //배열 b 선언
int *parr1; // 배열 a의 포인터 선언
int *parr2; // 배열 b의 포인터 선언
parr1 = (int *)malloc(sizeof(int)*5); //사이즈가 5인 배열a의 동적메모리할당
parr2 = (int *)malloc(sizeof(int)*5); //사이즈가 5인 배열b의 동적메모리할당

printf(swap 전 배열 a가 참조하는 주소 %p\n, arr1);
printf(swap 전 배열 b가 참조하는 주소 %p\n, arr2);
printf(swap 전 배열 a의 값 : %d, %d, %d, %d, %d\n, arr1[0], arr1[1], arr1[2], arr1[3], arr1[4]);
printf(swap 전 배열 b의 값 : %d, %d, %d, %d, %d\n, arr2[0], arr2[1], arr2[2], arr2[3], arr2[4]);
printf(\n);
swap_value(arr1, arr2); //두 배열의 값(value)를 swap하는 함수 실행
printf(swap 전 배열 a가 참조하는 주소 %p\n, arr1);
printf(swap 전 배열 b가 참조하는 주소 %p\n, arr2);
printf(swap 후 배열 a의 값 : %d, %d, %d, %d, %d\n, arr1[0], arr1[1], arr1[2], arr1[3], arr1[4]);
printf(swap 후 배열 b의 값 : %d, %d, %d, %d, %d\n, arr2[0], arr2[1], arr2[2], arr2[3], arr2[4]);
printf(\n);
free(parr1); //배열a의 동적메모리 해제
free(parr2); //배열b의 동적메모리 해제
}
void swap_value(int *arr1, int *arr2){
int temp=0; //temp함수 생성
for(int i=0;i5;i++){ // 배열 a와 배열 b의 value값을 변경
temp=arr1[i];
arr1[i]=arr2[i];
arr2[i]=temp;
}
}
여기까지 했습니다. 보이는건 똑같이 나오는데 두번째(reference)를 사용하면서 할때는 도저히 감이 안잡힙니다. 배열을 통째로 바꾸는건데 주소값까지 같이 바꾸는거여서.... 부탁좀 드립니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 돌심보

    arr이 배열이어서 넘길때 배열의 주소값을 가지고서 넘어가는걸로 알고있습니다.
    고로 &는 안붙여도 되는걸로 압니다..

  • 화이트

    주소를 넘겨야 되니까요

  • 화이티

    안되네요. 직접해보세요 되는지...ㅜㅜ 제가 알기론 배열넘길땐 &안붙이는걸로 알아서요..

  • 뽀야

    네 전부다 원래대로 하고여

  • 세움

    배열넘길땐 &안붙이지않나요? 문자열이엇나..급헷갈리네요..

  • 눈

    swap(&arr1,&arr2)해보세여

  • 별하

    그거 이미 해봤어요.. 그것도 안되요..

  • 너만을

    아뇨 temp = &arr[i] arr[i]=&arr[j] arr[i]=&temp로 해보심이... 틀렸다면 죄송ㅋ 저도 초보에여ㄷㄷ

  • 하람

    스왑부분이요..? 자세히좀 설명해주실수 있나요..? 잘이해가 안되서요.. void &swap_value 이렇게 하시라는 뜻인지..

  • 차오름

    주소를 통째로 바꿔야 한다면 &를 붙이면 될거같은데... 스왑하는 부분에여

번호 제 목 글쓴이 날짜
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
2699415 파일//read//와 배열 아란 2025-06-25
2699386 구조체 안에 일부분만 char 배열에 복사하려면 어떻게 해야하나요? (1) 미즈 2025-06-25
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com