본문 바로가기

반응형

Algorithm/C프로그래밍

(37)
[1주차] 1. Orientation + 포인터(1) # Orientation 고급 C 프로그래밍에서 배우는 것 큰 규모의 프로그램을 효율적으로 작성하기 위한 도구/문법을 배운다. ✅ 9장 포인터 -> 큰 데이터 효율적 조작 ✅ 10장 문자열 ✅ 11장 구조체 -> 어떤 객체의 구성 요소를 효율적으로 표현 ✅ 12장 동적할당 ->필요한 메모리가 그때 그때 다를 때 ✅ 13장 연산자/함수/자료형 심화 -> 비트 단위의 조작 ✅ 14장 파일 입출력 -> 데이터 보관 ✅ 15장 전처리와 분할컴파일 -> 코드를 팀으로 나눠서 작성 고급 C 문법 학습 tip 익숙해지기 따라하기 -> 모방 이해하기 메모리에 대해 다루는 내용이 많으니 그림을 그려 정확히 이해하자 -> 특히 포인터! 나중에는 머릿속에서 그림이 그려지도록. 구조체, 포인터, 배열 합쳐질 때 혼동이 클 것..
[C언어] 2차원 배열(3): 2차원 배열을 포인터에 넣기 * 출처: 코딩도장: 37.6 2차원 배열을 포인터에 넣기 1차원 배열은 단일 포인터에 넣을 수 있었다. 그렇다면 2차원 배열은 이중 포인터에 넣으면 되는 것 아닐까? 하지만 직접 컴파일 해보면 자료형이 일치하지 않는다는 경고가 뜬다. 2차원 배열을 포인터에 담으려면 다음과 같이 작성해야 한다. 자료형 (*포인터 이름)[가로크기]; 가로 크기가 4인 배열을 가리키는 포인터라는 뜻이다. ※ int *numPtr[4] - int *numPtr[4]; : int형 포인터 4개를 담을 수 있는 포인터 배열 - int (*numPtr)[4]; : 배열을 가리키는 배열 포인터 (자료형과 가로 크기가 일치한다면) int (*numPtr)[4] = numArr; 와 같이 2차원 배열을 포인터에 바로 할당할 수 있다.
[C언어] 2차원 배열(2): 2차원 배열의 크기 구하기 * 출처: 코딩도장 37.4 2차원 배열의 크기 구하기 가로 요소와 세로 요소의 개수를 따로 구해야 한다. ※ 가로(column, 열) 요소의 개수: 가로 한 줄의 크기 / 요소의 크기 ※ 세로(row, 행) 요소의 개수: 배열이 차지하는 전체 공간 / 가로 한 줄의 크기
[C언어] 2차원 배열(1): 2차원 배열 선언하고 값 할당하기 * 출처: 코딩도장 37.1 2차원 배열을 선언하고 요소에 접근하기 2차원 배열은 []를 두 번 사용하여 선언한다. 첫 번째 대괄호에는 세로 크기, 두 번째 대괄호에는 가로 크기를 지정한다. ※ 세로x가로로 표기하는 것을 꼭 기억하자.(일반적인 2차원 공간 표기는 가로x세로) 요소를 초기화 할 때, 가로 요소들을 먼저 묶고난 후, 가로 줄을 세로 크기 만큼 묶는다. 2차원 배열의 요소에 접근하려면 '배열[세로인덱스][가로인덱스]'를 사용하면 된다. ※ 배열 초기화 시, 가로 요소를 중괄호로 묶지 않아도 컴파일 가능하다.(이해 어려워 잘 안 쓴다.) ※ 실제로 2차원 배열의 값은 위와 같이 일렬로 쭉 늘어서 있다. ※ 따라서 numArr[0][4]와 같이 가로 인덱스가 범위를 벗어나도록 지정하면, 그 다음..
[C언어] 배열과 포인터의 관계, 차이점 * 출처: 코딩도장 36.8 배열을 포인터에 넣기 * 출처: 최유경 교수님 C 프로그래밍 포인터 수업자료 ■ 배열 이름의 비밀 배열 이름은 배열의 0번 원소의 시작 주소를 의미한다. ※ &ar은 전체 배열의 시작 주소. (값은 같지만, 다른 자료형이다.) □ 주소를 이용한 배열 참조 - 배열 이름은 주소를 의미하므로, 참조 연산자와 함께 사용할 수 있다. ■ 배열 주소에 대한 증감 연산 - 배열 원소 하나의 크기만큼 증감 (int 배열의 경우: 4) - ar+i : 배열 ar의 i번째 원소의 주소 - *(ar+i) : 배열 ar의 i번째 원소의 값. 즉 ar[i] ■ 배열을 포인터 변수에 연결하여 사용하기 - 배열 이름은 주소를 의미하므로, 포인터 변수에 대입할 수 있다. - 배열의 0번째 원소의 주소 ..
[C언어] 배열의 크기 구하기 * 출처: 코딩도장 36.4 배열의 크기 구하기 배열의 크기를 알아서 계산하도록 만든다. 이미 선언된 배열의 크기(요소의 개수)를 구한다. 이때 sizeof 연산자를 사용한다. ※ 배열의 크기를 구할 때는 전체 공간을 요소의 크기로 나눈다. ※ 배열의 크기와 인덱스 C언어는 인덱스가 배열의 범위를 벗어났는지 검사하지 않으므로 프로그래머가 직접 신경 써야한다. 배열의 크기(요소 개수)를 변수에 저장해두고, 배열에 접근하기 전에 접근하려 하는 인덱스가 (요소 개수 - 1)을 넘지 않는지 확인하는 것도 좋다.
[C언어] 다양한 경우의 수로 배열 선언하기 워낙 경우가 다양하고 변용이 잘 되기 때문에 주의할 점에 유의해서 사용할 때 헷갈릴 때마다 시도해보는 것이 나을 것 같다. 주의할 점 1. ','의 사용(0으로 저장되는가 / 쓰레기값으로 저장되는가 / 컴파일 에러인가) 2. 인덱스 범위 3. 지정한 인덱스에 값이 할당 되어 있는가 4. 쓰레기 값과 0 값의 구분 ▷ 아래에 대표적인 몇 가지 유형에 대해서 작성해보았다. 참고만 하자. 1. 크기 O - 요소에 ',' 사용 시 초기화하지 않은 요소에 대해서 0 할당 됨 2. 크기 X 초기화 시 ',' 사용 가능....? (부정확) 그러나 ','를 이용해 채운 값에 0이 저장되지 않는다. (sizeof 연산자로 확인 가능) 하지만, 요소에 값이 할당 되어 있는가, 없는가에 따라 컴파일 에러 발생 여부 갈린다...
[C언어] 배열 개념: 배열을 선언하고 요소에 접근하기 * 출처: 코딩도장 36.0 배열 사용하기, 36.1 배열을 선언하고 요소에 접근하기, 36.2 배열을 0으로 초기화하기 배열은 같은 자료형의 변수를 일렬로 늘어놓은 형태이다. 반복문과 결합하여 사용하면 연속적이고 반복되는 값을 쉽게 처리할 수 있다. 변수 이름 뒤에 []을 붙이고 크기를 설정한다. 부가적으로 값을 초기화할 때는 {}을 사용한다. ※ 배열을 선언하면서 값을 초기화할 때, {} 안의 값 개수는 배열의 크기보다 작아도 됨. 그러나 크면 안 됨. ※ {}로 배열에 값을 저장하는 것은 배열을 선언할 때만 가능하다. (이미 선언된 배열에는 사용할 수 없다.) 배열의 각 요소에 접근하려면, 배열 변수명 뒤 [] 안에 각 요소의 인덱스를 지정해주면 된다. ※ 배열 선언과 배열 인덱스 배열을 선언할 때..

반응형