본문 바로가기

프로그래머스/프로그래머스 Study

[10-2] 타입스크립트 기초3

2024.04.30 이번 주간도 과제 요약제출 'ㅅ' 

 

배운 점 요약 
- 반복문(break&continue)
- 변수의 범위(지역, 전역, static)
- 배열
- 포인터

 

c언어에서 포인터가 제일 어렵다고 생각하는데, 오늘은 다시한번 짚어볼 수 있는 시간을 가져서 좋았다.

그리고 오늘 배우면서 느낀건데, 생각해보니 JavaScript쓸 때는 변수에 배열 그냥 바로바로 복사했는데 Java했을 때 기억 되짚어보니 요소마다 하나하나 for문 돌려서 값 넣어줬던 듯..!

정말 아무생각없이 익숙하게 쓰고 있었는데 이런 차이가 있었다. 사실 근데 JS도 안에 원리를 파고들면 Java랑 비슷한데 그냥 사용자의 편의성을 위해 저렇게 써도 문제 없는것이라고 함. 신기하구먼

 

 

 

반복문(break & continue)

- continue: 만난 즉시 다음 코드 무시하고 반복 조건으로 감
- break: 만난 즉시 반복문 빠져나감

 

 

 

 

함수

함수쓰는 이유:
1) 코드 가독성 향상
2) 코드 유지보수 및 확장 용이

함수의 종류:
1) 표준 함수
2) 사용자 정의 함수

인수 = 매개변수 = 전달인자 = 파라미터

void타입:
결과값을 리턴하지 않는 함수(타입이 없다는 의미 가짐)

 

 

 

 

변수의 범위

메모리는 스택, 힙, 데이터 이렇게 나뉨

지역함수:

- {}안쪽에 선언된 변수. 괄호 끝나면 소멸
- 매개변수도 지역변수
- 스택 메모리에 쌓임

전역변수:
- 함수 바깥쪽에 선언된 변수
- 어디서든 접근가능
- 프로그램 끝나면 소멸
- 테이터영역에서 관리

static 변수:
- 지역변수, 전역변수 반반 섞어놓은 느낌
- 전역변수 소멸될 때 같이 소멸
- 테이터영역에서 관리

메모리 생명주기:
- 전역변수: 프로그램 시작~ 프로그램 끝
- static변수: 함수시작~ 프로그램 끝
- 지역변수: 함수시작 ~ 함수끝

 

 

 

 

배열

- 같은 속성을 가진 것들을 나열해 놓은 것
- 인덱스로 접근가능(0부터 시작)
- 배열 이름 자체는 상수: 그래서 일반 변수처럼 복사 불가능(요소끼리 복사해야 함)
- 문자열 끝에는 반드시 null추가(그래서 문자열 길이 +1 해줘야 함)
  사람이 컴퓨터한테 의미있는 문자 범위 알려주기 위해 관습적으로 사용하는 것

 

 

 

 

포인터

- 포인터 변수의 줄임말로, 메모리 주소값 저장하는 변수
- 보통 맨 앞에 있는 값이 대표 주소값임
- *붙여서 선언
- 포인터 변수는 주소값만 들어가는 변수라서 &빠지면 오류남... 일반값이 못들어감
   *a = &a;

- pringf로 출력할 때 이렇게 사용하는데  
%d: 10진수
%p: 포인터
%x: 헥사, 16진수
포인터를 10진수로 뽑으면 값이 더러워서 깔끔하게 보려면 %p나 %x써서 출력하는거 추천

- *의 차이:
1) 선언시에 *a = &a는 a라는 변수가 포인터 변수인걸 나타내기위해 붙여준거
2) 선언 이후에 사용하는 *는 가리키는 해당 메모리의 실제값을 참조하라는 뜻

 

 

 

포인터와 배열

배열 이름은 포인터지만, 일반 포인터와 결정적인 차이점이 있음.
배열 이름 = 포인터 상수
상수: 값 변경X
e.g. 5 = 10이나 마찬가지
5가 상수라 10을 5에 대입할 수 없는 것처럼
    int arr[] = {1,2,3};
    int temp = 10;
    arr = temp;
이게 안된다는 뜻

 

 

 

함수와 포인터

매개변수 전달 형태에는 크게 값 복사, 참조 복사 2개임