본문 바로가기
728x90

Computer Science39

[C언어] 배열과 포인터의 관계 [C언어] 배열과 포인터의 관계 배열과 포인터는 매우 긴밀한 관계를 맺고 있다. 어떤 부분에서는 서로를 대체할 수도 있다. 일반적으로 다른 언어를 배우면 배열이 다음과 같다는 것을 이미 알고 있을 것이다. int arr[5] = {1, 2, 3, 4, 5}; int b = arr[1]; // b는 2라는 값을 가지게 된다. 변수들이 모여 있는 것이 배열이 아닌가? 라고 생각할 것이다. 맞다. 그것도 옳은 말이다. 그런데 그 근본에는 '포인터'가 있다. 배열에 인덱스로 접근하는 자바의 문법도 '포인터'를 쉽게 사용하게끔 바꾸어 놓은 것에 불과하다. 아래에서는 포인터 상수 개념과 포인터로 배열에 접근하는 방법에 대해 알아볼 것이다. 1. 포인터 상수(배열의 이름) 포인터 상수(Constant Pointer).. 2022. 7. 4.
[C언어] scanf가 변수의 주소(&)를 매개변수로 넘겨주는 이유 [C언어] scanf가 변수의 주소(&)를 매개변수로 넘겨주는 이유 키보드로 프로그램 내에 어떤 변수를 첨가하는 함수. java에는 대표적으로 Scanner, BufferedReader가 있고, python에는 input(), sys.stdin.read~~() 시리즈가 있다. C언어에는 scanf가 있는데, 이것이 어떻게 작동하는 지 알아볼 것이다. int main(){ int input; printf("정수를 입력해주세요. :"); scanf("%d", &input); return 0; } 위의 코드는 아래와 같이 콘솔창을 만들 수 있는 코드이다. input이라는 변수 안에 사용자가 키보드로 입력한 값을 담는 것이다. scanf의 첫번째 인자는 받아올 데이터의 타입을 입력하고, 두번째 인자에는 변수의 .. 2022. 7. 3.
[C언어] 배열 기초개념과 포인터로 배열 참조하기 [C언어] 배열 기초개념과 포인터로 배열 참조하기 C언어의 변수와 포인터를 알았다면, 이제 배열에 대해 알아나가고 배열을 활용하여 자료구조도 공부하고 데이터도 공부하고... 막 그러는 것이 아닐까 싶다. 생기초를 들여다 보았다면, 배열부터는 이제 정말 기초 개념이라고 할 수 있다. 아래에서는 배열을 사용하는 이유와 포인터로 배열을 참조하는 방법, 그리고 C언어의 배열이 메모리를 어떻게 사용하는 지에 대해 알아볼 것이다. (배열 문법을 사용하는 것은 여타 다른 언어들과 다른 점이 거의 없기 때문에 다루지는 않을 것이다.) ✏️ 배열을 사용하는 이유 순서있는 데이터 관리 관련된 데이터를 모아서 관리 변수 1개로 공간 여러 개를 컨트롤 할 수 있다. index로 접근하여 빠르게 탐색을 할 수 있다. ✏️ 포인.. 2022. 7. 1.
[C언어] 다중포인터 구현해보기 [C언어] 다중포인터 구현해보기 포인터는 이제 어느 정도 이해를 하고, 어떤 것을 가리키든 그것이 무엇인지 알 수 있다면? 다중포인터를 알아보는 것이 좋겠다. 다중 포인터는 다른 것이 없다. 그냥 포인터가 여러 개 겹겹이 쌓인 것이라고 할 수 있다. p -----> a -----> b -----> 10 이렇게 변수들이 서로를 가리키고 있다고 하자. int b = 10; int *a = &b; int *p = &a; 이렇게 있다고 볼 수 있다. 하지만 이런 식으로 코드를 작성하면 오류를 경험할 수 있다. int b = 10; int *a = &b; int **p = &a; == int *(*p) = &a; 이렇게 나타내야 한다. (*p)가 가리키는 곳이 &a이다라고 설정을 해주어야 한다. 그래서 **이 쓰.. 2022. 6. 29.
[C언어] 포인터를 사용하는 진짜 쉬운 이유. [C언어] 포인터를 사용하는 진짜 쉬운 이유. 포인터는 초급 개발자의 뇌를 심각하게 트레이닝 시킨다. 이중 삼중으로 들어가는 포인터에 메모리 구조를 상기시켜야 하고, 이게 어디들어가는지, 누구를 참조하는 지 참 복잡하고 헷갈릴 때가 많다. 현재 나 또한, 그 과정 어디엔가 있는 것 같다. 이번 포스팅에서는 이전까지 다루어왔던 메모리 구조, 포인터의 정의에서 나온 말들을 하나씩 디스크 조각모음을 하여 왜 우리가 포인터에 대해서 알고, 어떻게 활용해야 할 지를 이야기 해 볼 것이다. C언어는 개발자가 원하는 대로 메모리를 관리할 수 있다고 누구든 이야기를 한다. 그런 이점을 활용해서 메모리를 아낄 수 있고, 효율적인 프로그램을 개발자가 만들 수 있다고 많은 사람들은 결론을 짓는다. 그렇다. 그렇기 때문에 '.. 2022. 6. 29.
[C언어] 포인터 기본 개념 알아보기 [C언어] 포인터 기본 개념 알아보기 c는 매뉴얼이 많다. 자바가 일반 자동변속기 승합차라면, c는 90년대 대형버스라고 할 수 있다. 많은 것들을 내가 스스로 조작할 수 있다. 변속이라던지, 가속이라던지, 문을 열고 닫는다던지, 저단 기어를 넣어서 느리지만 힘을 가지고 갈 지 등등, 많은 것들을 개발자가 조종할 수 있다. 그래서 Low 레벨 언어라고도 한다. 포인터는 메모리 주소와 연관되어 있는 문법이다. 메모리는 이전 글에서 살펴봤듯, 힙과 스택 영역에 위치한다. 이전글 : 2022.06.27 - [프로그래밍 언어/C\C++] - [C언어] C언어의 메모리 관리 그 스택 영역은 고유한 주소값을 가지고 있고, 포인터를 쓰면 변수가 저장된 메모리 주소를 불러올 수 있다. 메모리 주소를 불러온 것을 가지고.. 2022. 6. 27.
728x90