Programming(109)
-
열혈 C - Chapter 19 함수 포인터와 void 포인터
19-1 함수 포인터와 void 포인터함수 포인터는 독특한 포인터이다.그러나 기존에 Chapter 18을 잘 이해했다면 어렵진 않을 것이다그런데 void포인터는 활용이 잘 되는 편인데, 함수 포인터는 기본서를 통해서는 접하기 힘들것이다.추후에 다양하게 공부하면서 접하게 될것이나 우선 이해에 대해서만 설명해보겠다. 우선 이전에 포인터 변수의 접근에 대해서 생각해보자.먼저int num = 10;int * ptr = #*ptr = 20;이라는 코드를 작성했을때 컴파일러는 해당 코드를 어떤 기준으로 컴파일을 할까이전에 말했던 것 처럼 ptr이라는 것에는 주소값이 담겨 있고 그 외에 가리키고 있는 값의 타입에 대한 정보를 담고 있고 그걸 가지고 컴파일을 하게 된다. 더 세부적으로는 0x1234라는 숫자는 ..
2024.10.19 -
열혈C - Chapter 18 다차원 배열과 포인터의 관계
18-1 2차원 배열이름의 포인터 형2차원 배열 이름의 포인터형은 무엇일까예를들어 int arrd[3][4];라는 2차원 배열이 있다고 했을때 이 배열의 이름의 포인터형은 무엇일까에 대해서 생각해보자.이는 꽤나 쉽지는 않다. 우리가 잘아는 1차원 배열을 두개 선언해보자.int arr[3];int arr2[4];가 있을 때 각 배열의 이름의 포인터의 타입은 int * 이다그 이유는 배열의 이름은 배열의 첫요소인 arr[0]을 가리키고 있기 때문이며 그 타입은 int형이기 때문이다.그런데 이런 방식이 이차원 배열에서는 통용되지 않는다. 2차원 배열을 하나 더 만들어보자.int arr2d[3][4];int arr2d2[3][3];과 같은 2차원 배열이 있다고 보면 우리는 배열의 길이는 상관없이 1차원 배열이면..
2024.10.18 -
열혈C - Chapter 17 포인터의 포인터
포인터는 상수, 변수의 형태를 띌수 있다.상수로는 변수의 이름을 대표적으로 볼 수 있고, 변수의 형태는 대표적으로 포인터 변수를 볼 수 있다.그런데 사실 그냥 궂이 이렇게 나눠서 이야기하지는 않는다.보통은 대부분 포인터라고 한다면 포인터 변수를 이야기 하지만 그렇지 않은 경우도 있다는걸 알아두자.여기서 이야기할 내용은 포인터 변수에 대한 내용이다. Chapter 17에서 말하고자 하는 가장 핵심이 되는 내용은 이런것이다. 이전에 int num = 12;int * ptr = #과 같이 사용했었다.여기서 ptr에 &num으로 num의 주소값을 전달해줌으로써 포인터 ptr이 num을 바라보도록 했었다.그렇다면 ???? = &ptr이 ptr의 주소값을 담는 변수의 타입은 어떻게 될까? 기본적으로 주소값을..
2024.10.13 -
열혈C - Chapter 16 다차원 배열
16-1 다차원 배열의 이해와 활용다차원 배열은 2차원 배열과, 3차원 배열을 의미한다.문법적으로는 4차원 배열이 있는데 이는 현실에 4차원 배열을 표현해야할 이유가 없기 때문에 사용되지 않는다.거기서도 보통은 2차원 배열이 대부분이고 3차원 배열은 거의 사용되지 않는다. 먼저 2차원 배열은 1차원 배열이 여러개 합쳐져 있는 형태를 띄고 그 선언 방법은 int arr[3][5];와 같이 선언을 한다. 여기서 3부분은 5의 길이를 갖는 배열의 갯수가 3개가 합쳐진 형태임을 의미한다.그냥 쉽게 생각하면 int arr[배열의 갯수][배열의 길이];라고 생각하면 된다. 이때 값에 접근하는 방법은printf("%d", arr[1][3]);와 같이 접근이 가능하고 이것의 의미는 2번째 배열의 4번째 요소에 접근한..
2024.10.13 -
열혈C - Chapter 14 포인터와 함수에 대한 이해
14-1 함수의 인자로 배열 전달하기인자의 전달에 대해서 생각해보자예를 들어 int num = 10;fct(num); //임의의 함수 fct라는 코드를 작성했다고 보자.fct에 num을 전달했다고 보통 말하는데 사실 fct에 num이란 변수를 전달할 방법은 없다.다만 인자로 전달할때 매개체가 되는 변수(매개변수)를 선언해서 num이 갖고 있는 값을 복사해서 넣어 전달하는 방법이지 num자체를 전달하는 것은 아니다.그래서 사실 정확하게 표현하려면 fct함수를 호출 하면서 num이 갖고 있는 값을 전달한다 라고 말하는게 정확하다. 그래서 이렇게 우리는 변수에 저장된 값을 전달할 수 있다.그러면 함수의 인자로 배열을 통째로 전달할 수 있을까?위에서 말한 fct에 num을 넣으면 num에 있는 값이 fct의 매..
2024.10.09 -
열혈C - Chapter 13 포인터와 배열! 함께 이해하기
13-1 포인터와 배열의 관계 먼저 배열의 형태를 보자.int arr[3];이렇게 배열 arr을 선언 했다.여기서 배열의 이름인 arr은 배열의 첫번째 요소의 주소값을 갖고 있게 된다arr이 arr[0]을 가리키는것이고 arr은 arr[0]의 주소값을 갖고 있는 상수가 된다.이 형태를 보면 int num;int* ptr;ptr = #의 코드와 비슷한 기능을 한다는 것을 알 수 있다. 여기서 포인터와 배열의 다른점은 포인터 변수의 경우는 int num1;int num2; int* ptr;ptr = &num1;ptr = &num2;와 같이 처음 넣었던 주소값을 다른 값의 주소값으로 변경이 가능하다는 점이다.그러나 배열의 경우는 arr안에 있는 arr[0]의 주소값을 변경할 수 없다. 포인터 변수는 변..
2024.10.07