글

포인터로 배열 요소 접근 — 포인터 연산·배열 표기법과 포인터 표기법·포인터 순회 | 기초 C언어 10.2.3-2

이미지
기초 C언어 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 10.2.3-2 포인터로 배열 요소 접근 배열 이름이 시작 주소라는 사실에서 출발하는 포인터 연산. scores[i]와 *(scores + i)의 관계, 포인터 변수로 배열을 순회하는 방법과 10장 마무리. 교재 수록 위치 교재 『기초 C언어』 · 이은상 · 부크크 · 364쪽 단원 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 › 포인터로 배열 요소 접근 쪽수 313p ~ 317p 5쪽 세부 내용 포인터 연산의 원리 · 배열 표기법 vs 포인터 표기법 · CODE 10.7 · CODE 10.8 학습 목표 포인터 연산의 원리를 이해하고, 배열 표기법과 포인터 표기법 및 포인터 순회로 같은 요소에 접근하는 방법을 비교함 영상 주소 https://youtu.be/hC8eoQfI9FQ 영상 목차 · 원하는 부분부터 보기 0:00 · 강의 소개와 포인터 연산 0:58 · 요소 크기에 따른 주소 이동 2:34 · 배열 표기법과 포인터 표기법 4:29 · 두 표기법의 출력 비교 6:26 · 포인터로 배열 전체 순회 9:15 · 10장 포인터 정리 01 시작 주소에서 나머지 요소로 교재 313p 앞 편의 p = scores; 처럼 배열 이름은 첫 번째 요소의 주소. 이 사실이 주소 하나로 나머지 요소에 닿는 길을 엶. 포인터 연산(Pointer Arithmetic) — 포인터에 덧셈과 뺄셈을 하는 연산. 이것으로 배열의 모든 요소에 접근 가능. 8.1.3에서 for 문과 인덱스로 하던 배열 순회를 이번에는 주소로 다시 살피는 편. 02 p + 1은 1바이트가 아니라 한 요소만큼 교재 313~314p 배열의 요소는 메모리에 빈틈없이 연속으로 나열됨. 한 요소의 주소에 자료형의 크기만큼 더하면 바로 다음 요소의 주소. 포인터 연산은 이 계산을 컴파일러가 자동으로 처리하는 기능. int형 포인터 p에 p + 1 을 하면 주소가 1이 아니라 int의 ...

배열 이름은 곧 주소 — 배열 이름과 &scores[0]·포인터 변수와 주소 상수의 차이 | 기초 C언어 10.2.3-1

이미지
기초 C언어 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 10.2.3-1 배열 이름과 주소 식에서 첫 번째 요소의 주소로 변환되는 배열 이름. 포인터에 그대로 대입되지만 다른 주소를 새로 대입할 수는 없는 주소 상수라는 차이. 교재 수록 위치 교재 『기초 C언어』 · 이은상 · 부크크 · 364쪽 단원 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 › 배열 이름과 주소 쪽수 311p ~ 313p 3쪽 세부 내용 배열 이름과 주소 · CODE 10.6 · 배열 이름과 포인터 변수의 차이점 학습 목표 배열 이름이 첫 번째 요소의 주소로 쓰이는 원리를 확인하고, 포인터 변수와 배열 이름의 차이를 구분함 영상 주소 https://youtu.be/g5qEbnd4f1w 영상 목차 · 원하는 부분부터 보기 0:00 · 강의 소개와 배열 이름 1:58 · 배열 이름과 첫 요소의 주소 2:55 · 세 가지 주소 출력 예제 6:25 · 배열 이름과 포인터 변수의 차이 8:20 · 핵심 정리 01 & 없이 넘겼던 배열 이름 교재 311p 4.3.3의 scanf("%s", name); , 8.3.2의 city처럼 문자열을 입력받을 때 배열 이름 앞에는 &를 붙이지 않았음. 그때는 배열 이름 자체가 주소라고만 하고 넘어감. 앞 편에서 함수에 주소를 넘겨 원본을 바꾸는 방법을 다룸. 이번 편은 미뤄 둔 배열 이름의 정체를 정식으로 정리하는 단계. C언어에서 배열과 포인터는 겉보기에는 달라 보이지만 실제로는 매우 깊고 특별한 관계. 02 첫 번째 요소의 주소로 변환되는 배열 이름 교재 311p 배열 이름은 대부분의 식에서 배열의 첫 번째 요소 주소 로 변환되어 사용됨. 따라서 scores는 많은 경우 &scores[0] , 곧 0번째 요소의 주소와 같은 의미로 사용 가능. int 배열이라면 요소마다 보통 4바이트씩 이어져 놓이며, 배열 이름이 나타내는 것은 그 맨 앞 칸의 주소...

참조에 의한 호출 — 주소 전달·포인터 매개변수·역참조로 바꾸는 swap | 기초 C언어 10.2.2-2

이미지
기초 C언어 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 10.2.2-2 참조에 의한 호출 값 대신 변수의 주소를 함수에 전달해 원본을 직접 바꾸는 참조에 의한 호출. 호출·정의·내부의 세 단계와 swap(&x, &y)의 결과. 교재 수록 위치 교재 『기초 C언어』 · 이은상 · 부크크 · 364쪽 단원 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 › 참조에 의한 호출 쪽수 307p ~ 310p 4쪽 세부 내용 참조에 의한 호출 예제 · 세 단계 · CODE 10.5 · 포인터를 이용한 참조에 의한 호출 개념 학습 목표 참조에 의한 호출의 세 단계를 구분하고, 주소를 전달받은 함수가 원본 변수를 바꾸는 과정을 설명함 영상 주소 https://youtu.be/J06sJfEPTVs 영상 목차 · 원하는 부분부터 보기 0:00 · 강의 소개와 주소 전달 1:58 · 호출·정의·역참조의 세 단계 3:01 · 주소로 두 값을 바꾸는 swap 5:12 · 주소 전달과 원본 값 교환 과정 7:10 · 원본 수정이 필요한 경우 9:50 · 핵심 정리 01 바꾸지 못한 swap에서 출발 교재 307p 9.2.3에서 확인한 값 전달의 한계, 그리고 앞 편 CODE 10.4의 swap. 함수 안에서는 교환했지만 a·b가 복사본이라 main의 x·y는 그대로였음. 고칠 곳은 세 군데. 함수 호출의 swap(x, y), 함수 정의의 int a·int b 매개변수, 함수 내부의 교환 세 문장. 원본을 직접 바꾸려면 값이 아니라 변수의 주소 를 전달해야 하며, 이를 위해 쓰는 것이 포인터. 02 참조에 의한 호출의 세 단계 교재 307~308p 참조에 의한 호출 — 변수의 값 대신 변수의 주소를 함수에 전달하는 방식. 교재 제목처럼 주소에 의한 호출이라고도 함. 단계 하는 일 예 함수 호출 시 &로 변수의 주소를 인수로 전달 swap(&x, &y); 함수 정의 시 매개변수를 포...

값에 의한 호출 예제 — swap 함수·임시 변수 temp·복사본 매개변수 | 기초 C언어 10.2.2-1

이미지
기초 C언어 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 10.2.2-1 값에 의한 호출 예제 두 값을 맞바꾸는 swap 함수로 다시 확인하는 값에 의한 호출. 함수 안에서는 교환되지만 main의 원본 x·y는 그대로인 까닭. 교재 수록 위치 교재 『기초 C언어』 · 이은상 · 부크크 · 364쪽 단원 Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용 › 값에 의한 호출 예제 쪽수 306p ~ 307p 2쪽 세부 내용 값에 의한 호출 예제 · CODE 10.4 · 동작 순서 · 원본을 바꾸려면 주소 전달 학습 목표 값에 의한 호출로 만든 swap 함수가 원본 변수를 바꾸지 못하는 까닭을 복사본 매개변수의 동작으로 설명함 영상 주소 https://youtu.be/BLifnSIxdvY 영상 목차 · 원하는 부분부터 보기 0:00 · 강의 소개와 값에 의한 호출 1:06 · swap 예제와 실행 결과 3:14 · 임시 변수로 두 값 교환 5:06 · 호출 시 값 복사와 원본 유지 7:47 · 원본 수정에 주소가 필요한 이유 8:36 · 핵심 정리 01 9장에서 남긴 값에 의한 호출의 한계 교재 306p 9.2.3에서 add_ten에 넘긴 변수는 호출 뒤에도 값이 그대로였음. 값에 의한 호출로는 원본 변수의 값을 수정할 수 없다는 확인. 값에 의한 호출 — 변수 자체가 아니라 변수에 저장된 값만 복사하여 전달하는 방식. 매개변수를 바꾸어도 main의 원본은 바뀌지 않음. 앞 편에서 포인터로 다른 변수의 값을 바꾸는 방법을 익힘. 이번 편은 그 필요성을 두 값을 맞바꾸는 swap 함수로 다시 확인하는 단계. 02 CODE 10.4 — 값을 넘기는 swap 교재 306p swap 함수 는 int형 매개변수 a, b를 받아 두 값을 서로 교환. main 함수는 x를 10, y를 20으로 초기화한 뒤 swap(x, y); 를 호출하고 전후의 값을 출력. 실행 결과는 ‘바꾸기 전 x: 10, y: 20’과 ...