본문 바로가기

Pointer4

[C 기초 문법] 이중 포인터 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. 두 배열을 교환 (Swap) 하려면? 방법 1 : 각 원소에 대해 swap 연산 수행 👉 비효율적 방법 2 : 이름만 바꿔줄 수는 없을까? 🤔 #1 이중 포인터 포인터는 변수 모든 변수(포인터)는 그 변수를 가리키는 포인터를 가질 수 있다. 즉, 포인터를 가리키는 포인터를 생성할 수 있다. int a = 10; int* p = &a; int** dP = &p; a = 10 *p = 10 **dP = 10 (이중 참조) 이전에 원본값을 바꾸기 위해서 주소값을 함수의 인자로 사용했다. 이처럼 포인터를 바꾸기 위해서 포인터의 주소값을 함수의 인자로 사용하고, 이를 이중 포인터가 매개변수로 사용된다. 방법 2 : 포인.. 2022. 12. 26.
[C 기초 문법] 포인터와 배열 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. 배열 이름은 연속된 메모리 공간의 시작 주소 배열의 이름 전달 👉 메모리 주소 전달 - 배열을 전달 한 것과 같은 효과 (call-by-reference) - 배열의 원소 접근가능 #1 포인터의 산술 연산 (Pointer Arithmetic) 사용 가능 산술 연산 : +, -, ++, -- 포인터가 가리키는 대상의 data type의 크기(bytes)만큼 증/감 주의사항 *(p+1) vs (*p+1) : 포인터 산술 연산 vs 포인터 간접 참조한 값 연산 *++p vs ++*p : 포인터 산술 연산 vs 포인터 간접 참조한 값 연산 *(asterisk)의 위치에 따라 결괏값이 달라질 수 있다. #2 포인터로 다.. 2022. 12. 26.
[C 기초 문법] 포인터 주의사항 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. #1 원본 값을 보호 - "const" 함수에서 포인터를 매개인자로 받을 때 원본 값을 보호하기 위해서는 'const'를 사용한다. 그렇게 되면 함수 내에서 상수 취급을 한다. const의 위치에 따라 상수 취급하는 대상이 달라진다. 1. const int *ptr : 간접 참조된 위치의 값을 상수 취급한다. *ptr = 100; // error prt = &b; // okay 2. int* const ptr : 포인터 변수를 상수 취급한다. *ptr = 100; // okay ptr = &b; // error #2 Local variable 주소 반환 ? 함수 내 지역 변수의 주소를 반환하면, 함수가 종료되는.. 2022. 12. 25.
[C 기초 문법] 포인터? 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. 포인터에 대한 이해가 부족하여 포스팅을 작성하게 됐습니다. 제 이해를 위해 작성하는 포스팅이라, 최대한 구어체로 작성될 수 있으며 도움이 안 될 수 있습니다. &(Ampersand) : "변수의 주소" (시작 주소) 메모리 주소의 길이 = Address bus의 크기 (word) 배열의 이름 = 배열 시작 주소 " Call by reference는 원본이 전달되는 것과 유사하다." 그렇다면 다음 두 가지 궁금점이 생긴다. 1. 메모리 주소를 전달받을 매개변수는 무엇인가? 2. 해당 주소의 값을 변경하려면 어떻게 해야하는가? #1 포인터 ( Pointer or Pointer Variable) 1. 주소를 저장하는.. 2022. 12. 25.