본문 바로가기

반응형

Algorithm

(55)
[2주차] 포인터(3), (4) #9.3 배열과 포인터 배열 이름의 비밀 배열 이름 == 배열의 0번 원소의 시작 주소를 의미 따라서 정수형 배열의 자료형은 int * &ar은 전체 배열의 시작 주소 ar과 값은 같지만 다른 자료형(13장) 주소를 이용한 배열 참조 배열 이름은 주소를 의미 -> 참조 연산자와 사용 가능 배열을 포인터 변수에 연결하여 사용하기 포인터 변수에 대한 증감 연산 -> 포인터 변수가 나타내는 자료형의 크기 단위로 증감 포인터 변수도 배열의 첨자 형태로 값 참조 가능 배열과 포인터 주의사항 포인터를 배열의 중간 원소에 연결시키는 것도 가능 -> 포인터는 단지 자신이 가리키는 주소를 기준으로 배열 쓸 수 있음 포인터 참조 연산자 사용 시 괄호 유의(연산자 우선순위) 포인터 변수의 증감량은 가리키는 배열의 원소 크기..
[1주차] 2. 포인터(2) #9.2 포인터 선언과 사용 포인터 (변수) 선언 구문 변수명 앞에 *(참조연산자) 붙임 포인터 대입(연결) 포인터 (변수)에 주소를 대입해서 특정 변수와 연결시키는 것을 "가리킨다"라고 표현(->) 포인터 참조 포인터 (변수)가 가리키는 변수에 접근하는 것 참조 연산자 * 사용 간접 접근: *pch = 'B' 직접 접근: ch = 'B' 포인터 주의사항 선언 후 연결 없이 바로 사용하면 런타임 오류(연결 안 하면 쓰레기값 들어있음) 반드시 어떤 변수에 연결한 후 사용해야 함 &(주소연산자)는 포인터를 포함한 모든 변수에 사용가능하지만, *(참조연산자)는 포인터 변수에서만 가능! 포인터 자료형과 연결된 변수의 자료형은 일치해야 한다. 서로 다른 자료형의 포인터 간 대입은 문법적으로 허용되기도 하지만 프로..
[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)을 넘지 않는지 확인하는 것도 좋다.

반응형