포인터 6

[c언어 개념] #10 함수 포인터, void 포인터

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 함수 포인터란? 변수 뿐만 아니라 함수들도 바이너리 형태로 메모리 공간에 저장되어서 호출 시 실행이 된다. 메모리상에 저장된 함수의 주소 값을 저장하는 포인터 변수가 '함수 포인터 변수'이다. 함수의 이름은 메모리상에 저장된 함수의 주소 값을 의미한다. 배열이름이 배열의 시작주소 값을 의미하듯, 함수이름도 함수가 저장된 메모리 공간의 주소 값을 의미하는 것이다. 그럼 함수 포인터 변수는 어떻게 선언해야 할까? 이를 위해서는 먼저 함수 포인터의 포인터 형을 결정해야 한다. 모든 변수가 그러하듯 형을 결정..

Algorithm/C 2022.07.24

[c언어 개념] #9 포인터의 포인터, 이중 포인터, 배열 포인터, 포인터 배열

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 포인터 변수를 가리키는 이중 포인터 변수(더블 포인터 변수) 포인터 변수는 종류에 관계없이 무조건 주소 값을 저장하는 변수이다. 차이가 나는 것은 포인터 변수가 가리키는 대상일 뿐이다. 이중 포인터 변수가 가리키는 대상은 싱글 포인터 변수이다. 이중 포인터 변수에 들어가는 값은 싱글 포인터 변수의 주소 값이다. #include int main(void) { double num = 3.14; double *ptr = # double ** dptr = &ptr; double *ptr2; ptr2 =..

Algorithm/C 2022.07.24

[c언어 개념] #7 포인터 대상의 const 선언

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. const 선언의 위치를 주의해서 보자. 포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언 int main(void) { int num = 20; const int * ptr = # * ptr = 30; //error num = 40; } const 선언을 맨 앞에 하게 되면, "포인터 변수 ptr을 이용해서 ptr이 가리키는 변수에 저장된 값을 변경하는 것을 허용하지 않겠다"는 의미다. num이 상수화되는 것은 아니다. const 선언으로 값을 변경하는 방법에 제한을 두는 것..

Algorithm/C 2022.07.20

[c언어 개념] #6 포인터와 함수

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 함수에서 인자 전달의 기본 방식은 '값의 복사'이다. 복사가 되는 것 뿐이라 함수 호출 후, 전달되는 인자(호출하는 곳에서의 변수)와 매개변수(호출되는 곳에서의 변수)는 별개가 된다. 인자의 저장된 값이 매개변수 값에 복사된다. 실제로 전달되는 것은 변수 자체가 아니라 변수에 저장된 값이다. 함수의 인자로 배열을 전달할 때는 배열의 주소 값을 인자로 전달한다. 배열 이름만 적으면 배열의 주소 값이 전달된다. 인자를 받는 함수의 매개변수는 전달받는 배열의 자료형과 동일한 형의 포인터 변수로 선언하면 된다..

Algorithm/C 2022.07.20

[c언어 개념] #5 포인터와 배열 (포인터 변수, 포인터 상수, 변수 형태의 문자열, 상수 형태의 문자열, 포인터 배열)

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 배열의 이름의 의미 배열의 이름도 포인터다. 단, 그 값을 바꿀 수 없는 '상수 형태의 포인터'이다. '포인터 상수'라고도 한다. 배열의 이름은 배열의 시작 주소 값을 의미하며, 포인터 변수와 달리 주소 값의 저장, 변경이 불가능하다. 앞 포스팅에서 다음과 같은 내용을 언급했는데, 여기서의 '상수 형태의 포인터'를 말한다. '포인터'는 '변수 형태의 포인터'와 '상수 형태의 포인터'를 어우르는 표현이다. 근데 포인터와 관련된 이야기라면 대부분이 포인터 변수의 얘기이므로, 포인터라 하면 우선적으로 포인터..

Algorithm/C 2022.07.20

[c언어 개념] #4 포인터의 이해

해당 카테고리에 3학년 2학기를 앞두고 여름 방학 맞이 c언어 복습을 기록하려 합니다. 그동안 배운 c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 지적과 피드백은 저를 발전시키니 언제나 환영입니다. 포인터 변수 포인터는 c언어가 low 레벨 언어의 특성을 지닌다고 얘기하게 만든 장본인이다. 왜냐하면 포인터를 이용하면 메모리에 직접 접근이 가능하기 때문이다. low 레벨 언어란? low 레벨 프로그래밍 언어 또는 저급 프로그래밍 언어라고 부른다. 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어다. 포인터를 잘 이해하기 위해서는 메모리 공간을 그림으로 ..

Algorithm/C 2022.07.20