선언과 정의
선언 : 컴파일러에게 대상에 대한 정보만을 알려주어 메모리가 아직 할당되지 않는다.
정의 : 컴파일러에게 대상의 실제 내용을 생성하게 한다. 실제 내용을 생성하고 할당한다.
메모리 구조
데이터 영역: 프로그램 시작하면 할당하고 프로그램이 종료하면 메모리 해제 (전역변수, 정적변수)
스택 영역: 함수 호출시 생성되고 함수호출이 완료되면 사라짐 (지역변수, 매개변수)
힙영역 : 필요에 따라 동적메모리를 할당->프로그램이 실행되는 동안 (런타임 시점)결정해야하는 경우
최댓값 구하기
주사 : 아래처럼 배열의 요소를 하나씩 차례로 살펴보는 과정을 알고리즘 용어로 주사 라고한다.
즉, 스캐닝 한다는 말과 같다.
- 상수사용 최소화하기 위해 전역변수로 배열 사이즈를 선언하였다.
- 그냥 int N = 5라고 했으면 arr [N]이 컴파일 에러가 난다. 배열의 요소개수에 변수는 들어갈 수 없다.
- 요즘 포인터를 해서 다 포인터로 넘겨줘야 한다고 생각하나, 값을 넘겨줄 경우 return 하여 돌려받는다.
- 돌려받을 자료형과 함수의 반환형은 일치해야한다.
- 배열을 넘겨주는건 주소값을 넘겨주는거랑 같은 말이다. 그러나 max는 함수내에서 선언되었기 떼문에 return 값으로 돌려받았다.
- 마지막 MaxiArr(iArr)에서 그냥 MaxiArr를 대입하여 컴파일에러가 나서 주의...
max로 치환시켜준 식이다. 좀더 깜끔해 보인다.
넘겨준 배열의 요소값이 바뀌지 않기 위해 const를 붙여주었다.
- 사람의 수를 먼저 입력 받았다.
- 2번에서 사람의 수만큼 배열을 동적할당을 한다.
- 동적할당된 곳에 사람의 키를 하나하나 입력을 받는다.
- 입력받은 키중 가장 큰 키를 함수 1번 함수를 통하여 구한다.
- 3번은 매개변수로 key (주소값저장된 포인터)를 넘겨줬는데 이게 배열인지 그냥 포인터인지는 매개변수가 알수가 없다. 그냥 주소값을 넘겨 받은게 끝이다. 그러므로 배열의 크기 역시 매개변수로 전달 받았다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 구조체 (0) | 2021.09.30 |
---|---|
[알고리즘]소수의 나열 (소수 구하기) (0) | 2021.09.30 |
[알고리즘] 배열 요소 정렬 / 함수형식 매크로 (0) | 2021.09.29 |
[알고리즘]난수사용하여 배열 요솟값 설정 및 최댓값 확인 (0) | 2021.09.29 |
[알고리즘] 배열 개념 (0) | 2021.09.29 |