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개임
'프로그래머스 > 프로그래머스 Study' 카테고리의 다른 글
[10-5] 타입스크립트 기초5 (0) | 2024.05.03 |
---|---|
[10-4] 타입스크립트 기초4 (2) | 2024.05.02 |
[10-1] 타입스크립트 기초2 (0) | 2024.04.29 |
[프로그래머스 9-1] jwt/authorization/ try-catch/Throw (0) | 2024.04.28 |
[프로그래머스 9-5] 타입스크립트 기초 (0) | 2024.04.26 |