///
Search
🧡

3주차 회고록 (6/27 - 6/30)

날짜 / 피드백 시각

→ 2022년 6월 30일 목요일 17시 00분 - 18시 00분

참여인원

→ 김도율 / 김동민 / 송주환 / 이주원 / 조아영 (전체 참여)

주요 정리 문항 1 _ C언어 / 챕터 23 : 배열 2 _ 문제 5번

<문제 코드>
void change(??) { } int main(void) { int x[2] = {100, 200}; printf("change 함수를 호출하기 전, x[0] : %d, x[1] : %d\n", x[0], x[1]); int* p = x; change(&p); printf("change 함수를 호출 후, x[0] : %d, x[1] : %d\n", x[0], x[1]); return 0; }
C
복사
<풀이> 스택 구조
→ 의문점은 ‘왜 포인터 p 가 p[0] 의 형태로 표현될 수 있는가?’ 였는데 [0] 을 제자리 [1] 을 하나 옆 이런식으로 생각하니 쉽게 이해되었다. 그림과 이해한 내용으로 진리표를 작성해보면,
x[0] = **arr = *arr[0] = arr[0][0] x[1] = *(*arr + 1) = (*arr)[1] = arr[0][1]
Plain Text
복사
→ 단, (*arr)[1] 의 표현에서 단순히 *arr[1]로 표현할 경우 배열 연산자가 먼저 인식되어, p의 다음 주소를 가리키는 오류를 범할 수 있으므로 반드시 괄호를 이용하여 표현한다.
<정답> _ 함수 부분만 표현
void change (int** arr) { (*arr)[0] = 200; // **arr = 200;/ *arr[0] = 200; / arr[0][0] = 200; / *(arr[0]) = 200; (*arr)[1] = 400; // *(arr[1]) = 400;->불가 // *(*arr+1) = 400; (*arr)[1] = 400; arr[0][1] = 400; }
C
복사
<퀴즈>
Quiz! 다음 주소는 몇 바이트 씩 차이가 날까? 문제1 : arr[0] <-> arr[1] 문제2 : (*arr)[0] <-> (*arr)[1]
Plain Text
복사
정답

주요 정리 문항 2 _ JAVA / 챕터 11 : 클래스와 객체8 _ 문제 3번

<문제 코드>
// 문제 : 아래가 실행되도록 해주세요. class Main { public static void main(String[] args) { 전사 a전사 = new 전사(); String 이름 = "칸"; a전사.이름 = 이름; a전사.나이 = 20; a전사.자기소개(); a전사.나이++; a전사.자기소개(); a전사.나이 = 30; a전사.이름 = "카니"; a전사.자기소개(); a전사.a무기 = new(); a전사.공격(); // 출력 : 카니가 활로 공격합니다. a전사.a무기 = new(); a전사.공격(); // 출력 : 카니가 칼로 공격합니다. } } class 전사 { // 인스턴스 변수 String 이름; // 인스턴스 변수 int 나이; // 인스턴스 변수 무기 a무기; void 자기소개() { System.out.println("안녕하세요. 저는 " + this.나이 + "살 " + this.이름 + " 입니다."); } } class 무기 { } classextends 무기 { } classextends 무기 { }
Java
복사
1.
공격 ⇒ 이름 + “가” + 무기 + “로 공격합니다.”
2.
무기가 쓸 수 있는 void 사용을 새로 만든다 ⇒ 각자 칼, 활 클래스에 무기마다 다르게 출력한다.
3.
사용(String 사용자이름)
<결과 코드>
package juhwan; class Main { public static void main(String[] args) { 전사 a전사 = new 전사(); String 이름 = "칸"; a전사.이름 = 이름; a전사.나이 = 20; a전사.자기소개(); a전사.나이++; a전사.자기소개(); a전사.나이 = 30; a전사.이름 = "카니"; a전사.자기소개(); a전사.a무기 = new(); a전사.공격(); // 출력 : 카니가 활로 공격합니다. a전사.a무기 = new(); a전사.공격(); // 출력 : 카니가 칼로 공격합니다. } } class 전사 { // 인스턴스 변수 String 이름; // 인스턴스 변수 int 나이; // 인스턴스 변수 무기 a무기; void 자기소개() { System.out.println("안녕하세요. 저는 " + this.나이 + "살 " + this.이름 + " 입니다."); } void 공격() { a무기.사용(this.이름); } } class 무기 { void 사용(String 사용자이름){ } } classextends 무기 { void 사용(String 사용자이름){ System.out.println(사용자이름 + "가 칼로 공격합니다."); } } classextends 무기 { void 사용(String 사용자이름){ System.out.println(사용자이름 + "가 활로 공격합니다."); } }
Java
복사