
2021.03.03.수 이중 포인터의 활용 : 포인터 값을 바꾸는 함수(swap_prt)의 매개변수 void swap_ptr(char** ppa, char** ppb){ char *temp = *ppa; *ppa = *ppb; *ppb = temp; } ✔ 이중 포인터는 포인터의 값을 바꾸는 함수의 매개변수에 사용된다. ✔ 2개의 포인터 변수에 문자열 상수의 주소가 각각 저장되어 있는 경우 이중 포인터를 활용해 ✔ 포인터 변수가 가르키는 문자열 상수의 주소를 바꾸어줄 수 있다. ✔ 변수의 swap함수를 이중 포인터를 사용해 구현해보자. 이중 포인터의 활용 : 포인터 배열을 매개변수로 받는 함수 //포인터변수를 저장하는 이중 포인터와 int형 변수를 매개변수로 받는 함수 void print_str(char..

2021.03.03.수 이중 포인터 ✔ 포인터도 저장공간을 갖는 하나의 변수이므로, 주소 연산을 사용해 포인터의 주소를 구할 수 있다. ✔ 그리고 포인터의 주소를 저장하는 포인터는 이중 포인터라고 말한다. ✔ 포인터를 저장하는 이중 포인터에 간접 참조 연산을 사용하면, 저장된 포인터의 주소를 반환한다. ✔ 포인터의 주소를 저장한 이중 포인터에 간접 참조 연산을 수행하면, 가리키는 대상인 포인터를 사용할 수 있다. ✔ 포인터 변수의 배열은 포인터를 요소로 갖는 배열. 간접 참조 연산을 수행하면 저장된 주소를 반환한다. ✔ 이중 포인터는 포인터의 주소를 저장. 간접 참조 연산을 수행하면 저장된 포인터를 사용해 대상을 가리킬 수 있다. 이중 포인터의 선언 int **ppi; ✔ 이중 포인터를 선언할 때에는 *..

2021.03.02.수 포인터 배열 복습 예제 ▼▼▼ 출력 코드는 더보기 참고 😎 더보기 #include int main(void) { int arr1[3] = { 1, 2, 3 }; int arr2[3] = { 4, 5, 6 }; int *parr[2] = { arr1, arr2 }; printf("\t\t[0]\t[1]\t[2]\n"); printf("arr1\t\t%d\t%d\t%d\n",arr1[0], arr1[1], arr1[2]); printf("arr2\t\t%d\t%d\t%d\n\n",arr2[0], arr2[1], arr2[2]); printf("\t\t [0]\t [1]\t [2]\n"); printf("arr1\t\t%d\t%d\t%d\n",arr1, &arr1[1], &arr1[2]..

2021.03.02.화 3차원 배열 ✔ 2차원 배열은 1차원 배열을 요소로 가졌다면, 3차원 배열은 2차원 배열을 요소로 가진다. ✔ 3차원 배열은 3개의 첨자를 사용하여 선언한다. int score[2][3][4]; ✔ 2차원 배열에서 각 행은 1차원 배열로서 2차원 배열을 구성하는 하나의 부분 배열이 된다. ✔ 3차원 배열에서 각 행은 2차원 배열로서 3차원 배열을 구성하는 하나의 부분 배열이 된다. ✔ 2차원 배열이 행과 열로 이루어져 있다면, 3차원 배열은 면과 행, 열으로 이루어져 있다. int classAscore[3][5]={ {90, 80, 70, 60, 50}, {50, 70, 60, 40, 80}, {70, 40, 20, 90, 70} }; int classBscore[3][5]={ {..

2021.03.02.화 2차원 배열 선언과 요소 사용 ✔ 4개 과목 점수를 한 명의 학생의 것만 처리할 때에는 int형 배열 하나로 가능하다. ✔ 여러 학생의 점수를 처리해야 할 때에는 같은 형태의 배열이 여러 개 필요한데 이런 경우 2차원 배열을 사용한다. ✔ 말하자면 2차원 배열은 1차원 배열을 요소로 가지는 배열이다. ✔ 2차원 배열을 사용해 1차원 배열 여러 개를 연속성을 지니게 해서 사용할 수 있다. ✔ 2차원 배열은 아래와 같이 행과 열로 표현하고 이해하는 편이 좋다. score[2][4] score[0][0] score[0][1] score[0][2] score[0][3] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 sco..

2021.03.01.월 지역 변수 ✔ 지역 변수는 예약어 auto와 함께 선언하며, 생략 가능하다. 자동 초기화되지 않는다. ✔ 지역 변수는 블록 내부로 제한되므로, 다른 함수에서 사용할 수 없다. ✔ 블록 범위는 중괄호를 기준으로 결정된다. ✔ 각 각 독립된 저장 공간이기 때문에 다른 함수에 같은 이름의 변수를 선언해도 충돌하지 않는다. #include void swap(int a, int b); int main(void){ int a = 10; int b = 20; swap(a,b); printf("a = %d, b = %d\n",a,b); // a = 10, b = 20 → 값이 그대로인걸 확인할 수 있다. } void swap(int a, int b){ int temp = a; a = b; b =..

📌 기타 연산자 앞에서 다루지 않았던 조건 연산자, 대입 연산자를 알아보자. 1. 조건 연산자 조건? A : B public static void main(String args[]) { int a = 10; int b = 20; int c = 10; boolean ab = a==b ? true : false; System.out.println("a와 b의 값은 같다 : "+ab); boolean ac = a==c ? true : false; System.out.println("a와 c의 값은 같다 : "+ac); } ✔ 조건이 참일 때, A 반환 거짓일 때, B 반환. 2. 대입 연산자 ✔ 우항의 값을 좌항에 대입하는 연산자. ✔ 복합 대입 연산자는 산술 연산과 대입을 동시해 수행한다. 복합 대입 연산자..

📌 비교 연산자 피연산자 두 개를 비교하는 데 사용되는 연산자이다. 제어문의 조건식에 사용되며 연산 결과는 오직 true와 false 중 하나이다. 1. 대소 비교 연산자 비교 연산자 설명 > 좌항의 값이 크면 true, 아니면 false 반환 = 좌항의 값이 크거나 같으면 true, 아니면 false 반환 는 1/2배의 연산 수행 ✔ 2진수 기준으로 비트 연산자 > 는 1/2^n배의 연산 수행 public static void main(String args[]) { int num1 = 3;//0000 0011 int num2 = 4;//0000 0100 //0000 0011 //1)+"\n"); } [참고] 자바의 정석

📌 산술 연산자 산술 연산자에는 사칙 연산자와 나머지 연산자가 있다. 몇 가지 주의할 사항이 있는데, 해당 사항을 중심적으로 살펴보자. 1. 사칙 연산자 + - * / ✔ 곱셈과 나눗셈 연산자가 덧셈, 뺄셈 연산자보다 우선순위가 높다 ✔ 피연산자가 정수형인 경우, 0으로 나눌 수 없다. a = 5 / 3 ; // 1 b = 5 % 3 ;// 2 c = 5 / 3.0 ; // 1.666667 ✔ 피연산자가 정수인 경우 나눗셈 연산자는 나머지를 반환하지 않는다. ✔ 몫만 반환하므로 나머지를 알고 싶다면 나머지 연산자를 사용한다. ✔ 피연산자 중 하나라도 실수라면 자동 형 변환(산술 변환)되어 나눗셈 연산의 결과는 실수를 반환한다. 'A' - 'B';//1 'A' + 'B';//131 ✔ 문자도 사칙 연산이 ..