inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C 프로그래밍 - 입문부터 게임 개발까지

Swap

포인터는 어렵네요 ㅜㅜ

300

양원석

작성한 질문수 1

0

'''void swapaddr(int a, int b){

int temp = *a;

a = b;

b = &temp;

}''' 로 했을때는 왜 복사가 일어나지 않는지 설명해주실 수 있나요?

또 질문드릴 점은 포인터 변수a 에서 a 는 가지고 잇는 값이고, a는 주소값, &a는 a의 주소가 저장된 주소값인가요?

좋은 강의 너무나도 감사합니다 ㅎㅎ

c

답변 2

0

양원석

빠른 답변 감사드립니다. ㅎㅎ

0

나도코딩

안녕하세요 나도코딩입니다. 질문글 중에서 코드 중에 별표가 빠졌나요? 인프런에서 글 입력시 누락되는 현상이 있어서, 의도하신 코드 그대로 적혔는지 모르겠네요 ^^;

두번째 질문 먼저 답변드리면, (이후 별표시는 한글로 "별"이라 적을게요)

int b = 10; // 주소 1001 에 저장된다고 가정

int 별a = &b; // 주소 2001 에 저장된다고 가정

이 상황에서

a 는 b 변수의 주소, 1001 입니다

별a 는 b 변수의 주소에 있는 값, 10 입니다.

&a 는 a 포인터 변수의 주소, 2001 입니다.

첫번째 질문은,

int a, int b 를 전달값으로 받는 경우 "값" 을 그대로 복사하여 a, b 라는 새로운 변수에 저장하게 됩니다. 즉 swapaddr 함수를 호출할때 던져주는 변수의 값을 바꾸는게 아니고, swapaddr 함수를 호출할때 새로 만들어지는 a, b 값을 바꾸게 됩니다. 그래서 함수 안에서는 바뀐것처럼 출력이 되어도 실제로 사용자가 원하는 변수의 값을 바꾼건 아니게 됩니다. 더불어 코드상에서 정수형 변수 b 에 temp 의 주소를 넣으려고 시도하는데, temp 의 주소는 정수형 변수가 아닌 포인터형 변수로 받아야 합니다.

감사합니다.

안녕하세요 7장 포인터에 관해 질문드립니다.

0

63

1

8-8 연장전 / 소스코드 공유해드려요. 참고하세요!

0

64

0

섹션6. 프로젝트 소스코드 올려드려요.

0

94

1

영상속에서 배운 코드들을 Git Repository에 올려두될까요?

0

79

1

경찰서 조서 프로젝트 문의

0

104

1

경찰관 조서 프로젝트

0

142

1

scanf

0

92

1

제대로 작성한것 같은데 빌드가 않됩니다.,

0

170

1

구문 오류 C2059

0

401

1

컴파일 시 fatal error C1010 발생

0

284

1

반환값이 없는 함수

0

215

1

반올림 되는건가요?

0

254

1

맥으로수강

0

193

1

10-2

0

257

1

질문이 있습니다

0

342

1

3-3 for 반복문 ++i 일때 질문입니다.

0

244

1

6-4(배열 파트 '문자 vs 문자열') sizeof 예제 다르게 출력되는 분들 참고하세요.

1

412

0

함수 선언과 정의를 동시에 해도 되나요?

0

1076

1

빌드오류가 있다고 나오고, 지정된 파일을 찾을 수 없다고 오류가 나옵니다..

0

404

1

안녕하세요 좋은 강의와 책 감사드립니다!! 다름이 아니라 명령어를 실행시켰을 때 저런식으로 나와서 질문드립니다

0

935

0

질문있습니다!

0

378

1

질문드립니다

0

387

1

scanf_s(" %d", &answer); 이후 바로 종료

0

312

0

질문 드립니다.

0

431

1