일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스택
- 자바스크립트
- 나만무
- CSS
- JavaScript
- 리액트
- 사이드프로젝트
- userprog
- Java
- 크래프톤 정글
- Vue.js
- pintos
- 알고리즘
- HTML
- Flutter
- 티스토리챌린지
- 시스템콜
- 4기
- 백준
- 크래프톤정글
- 오블완
- 소켓
- 큐
- corou
- 핀토스
- 코드트리
- defee
- TiL
- 자바
- 모션비트
- Today
- Total
목록포인터 (5)
미새문지
현재 코드의 출력값 구하기 정수형 y에 20을 넣고 fun 함수에 y인자를 넣고 호출 받은 매개변수를 정수형 x로 담아 x 에 30을 넣는다. 하지만 직접 주소값에 접근한게 아닌 call by value로 y의 값만 복사되었기 때문에 다시 main으로 와서 출력해도 y의 값은 변하지 않는다. 정답 : 2 현재 코드의 출력값 구하기 1번 문제와 반대로 call by address 즉, 직접 접근을 해 값을 변경할 수 있도록 주소값을 참조해 fun 함수가 호출되어 실행될 때 입력된 매개변수의 값이 y의 주소값으로 접근해 30으로 바뀐다. 정답 : 2 출력이 각각 뭐가 나오는지 확인하기 정수형 arri 배열에 1, 2, 3 값을 넣기, 정수형 포인터 ptri에 arri를 넣기 문자형 arrc 배열에 1, 2,..
배열과 포인터의 관계 배열: 배열은 여러 개의 데이터를 연속적인 공간에 저장하는 자료구조이다. 예를 들어, 5개의 정수를 저장하는 배열은 메모리에서 연속된 5칸을 차지한다. 배열은 인덱스를 사용하여 특정 위치의 값을 읽거나 쓸 수 있습니다. 포인터: 포인터는 주소값을 가지는 변수이다. 자신이 데이터를 저장할 공간을 가지지 않고, 데이터가 저장된 주소를 가리킨다. 포인터는 변수이므로 값을 변경할 수 있다. 배열과 포인터의 관계 배열의 이름은 배열의 첫 번째 요소를 가리키는 포인터로 간주될 수 있어 포인터처럼 동작한다. 따라서 배열의 이름은 사실상 포인터이다. 하지만 배열의 이름은 포인터와 달리 재 할당이 불가능한데, 배열의 이름은 그 자체로 주소이며, 변경할 수 없는 상수이다. 배열의 이름과 포인터 변수의..
동적 메모리 할당 실행 중(런타임)에 사용할 메모리 공간을 할당하는 것을 의미한다. 정적 할당(static allocation) 프로그램이 실행되기 위해서는 메모리가 필요한데 컴파일러는 컴파일 시점에 소스 코드를 읽고 변수 타입들의 크기에 따라 메모리를 할당한다. 동적 할당(dynamic allocation) 컴파일 타임이 아닌 프로그램 런타임에 필요한 만큼의 메모리 공간을 확보하는 것을 의미한다. 동적 할당이 필요한 이유 사용할 때마다 필요한 만큼만 메모리 공간을 확보하고 다 사용했다면, free시켜줌으로써 메모리 공간을 해제해 한정된 메모리 공간을 효율적으로 사용할 수 있게 된다. 함수가 종료되거나 변수의 영역을 벗어나면 자동으로 메모리가 해제되는 정적 할당은 스택에 저장된다. 하지만 동적 할당은 힙..
c언어에서는 두 종류의 소스 코드 파일이 있다 c파일(.c) 실제 프로그램을 돌게 하는 로직 코드 파일 내용 : 함수, 매크로, 변수 등 헤더 파일(.h) 여러 소스 코드 파일에 공통적으로 필요한 것들을 저장하는 파일 내용 : 함수 선언, 매크로, extern 변수 선언 등 #include로 헤더 파일을 작성 헤더 파일의 필요성 함수가 선언된 헤더 파일을 작성하면 여러 파일과 공유가 가능하다. 수정할 때 관련 파일이 많으면 모두 고치기 불편하기 때문에 유지 보수에 어려움이 생긴다. 포인터 데이터가 저장된 메모리의 주소 값을 저장하는 변수이며, 포인터 변수라고도 부른다. 메모리의 주소가 어디인지를 저장하는 전용 변수 특징 포인터를 통해 프로그램의 변수에 접근하여 읽고 쓰거나, 함수를 실행할 수 있다. 자료..
동적 계획법(Dynamic Programming) 복잡한 문제를 간단한 여러 개의 하위 문제로 분해하여 해결하는 알고리즘 설계 기법 큰 문제를 작은 문제로 나누어 해결하는 분할 정복과 비슷하지만, 다이나믹 프로그래밍은 각 하위 문제들이 서로 연관되어 있고, 작은 문제들의 해결을 통해 전체 문제를 해결한다. 동일한 하위 문제를 반복적으로 해결해야 할 경우, 해결 결과를 메모리에 저장해두고 이를 재사용함으로써 중복 계산을 피해 연산 시간을 단축시키는 것을 메모이제이션(Memoization)이라고 한다. 사용을 위한 두 가지 조건 중복 하위 문제 구조(Overlapping Subproblems) 큰 문제와 작은 문제를 같은 방법으로 해결할 수 있으며, 작은 문제의 답을 메모리에 저장하고 필요할 때마다 활용한다..