2024-07-29

시연·2024년 7월 29일

C언어

  • 주소값은 포인트변수에 넣어야한다.
  • 포인트에 접근해서 값을 변경한다? -> 어떻게 가능한것?
  • 포인트 변수를 포인트 변수로 받는다 => 이중포인트

배열(list와 비슷)

  • 변수사용없이 간편하게 사용가능하다.

  • arr는 point(맨 처음을 가르킴)

  • #include <stdio.h>

int main(void) {
// int arr[2000]; // 배열
// 나는 4바이트 짜리를 2000개 할당

// arr : 상수 포인터
// -> 해당 배열의 시작점
// arr[0] --> 배열의 시작점

int arr[3]; // 12바이트(4*3) -> 타입선언은 타입에 맞게 4평짜리 자리를 3개쓴다. (index 0부터 시작)

arr[0] = 10;
arr[1] = 20;
arr[2] = 30;

// 배열의 순회
for (int i = 0; i < 3; i++) {
printf("arr[%d] : %d\n", i, arr[i]);
}

// 배열의 총합
int sum = 0;

for (int i = 0; i < 3; i++) {
sum += arr[i];
}

printf("sum : %d\n", sum);

return 0;
}

  • 물리적으로 이동시키고 싶으면 arr +1 / 이게 어려우니까 arr[]사용
  • *arr로 바로 접근하면 첫번째 값 나옴
  • 즈소값 포털타고 들어간다.

-// 문제 : 배열에 숫자 2개 저장 후 저장된 각각의 숫자를 모두 출력해주세요.
// 조건 : 배열문법 사용불가
// 배열문법 : arr[0], arr[1];
// 힌트 : arr은 int 포인터 변수이다.
// 힌트 : arr은 첫 번째 상자의 주소를 가지고 있다.
// 힌트 : int배열이기 때문에 상자간의 거리는 4이다.
// 포인트로 접근하기!!!
#include <stdio.h>

#pragma warning(disable:4996)

int main() {
// 공간 3개가 만들어집니다.
// arr => 배열의 시작점을 가리키는 포인터 변수.
// arr => arr[0]변수의 주소값을 가진다.
int arr[2];

// 수정가능지역 시작
// arr => 첫번째 주소값에 값을 넣는다
//
arr +1 => 두번째 주소값에 값을 넣는다
(arr+0) = 10;
(arr+1) = 20;
printf("arr[0]: %d\n", (arr+0));
printf("arr[1]: %d\n",
(arr+1));

// 수정가능지역 끝

return 0;
}

  • // 문제 : 배열에 숫자 100개 저장 후 저장된 각각의 숫자를 모두 출력해주세요.
    // 조건 : 배열문법 사용불가
    // 배열문법 : arr[0], arr[1];
    // 힌트 : arr은 int 포인터 변수이다.
    // 힌트 : arr은 첫 번째 상자의 주소를 가지고 있다.
    // 힌트 : int배열이기 때문에 상자간의 거리는 4이다.

#include <stdio.h>
#pragma warning(disable:4996)

int main() {
// 공간 101개가 만들어집니다.
// arr => 배열의 시작점을 가리키는 포인터 변수.
// arr => arr[0]변수의 주소값을 가진다.
int arr[100];

// 수정가능지역 시작
for (int i = 0; i <100; i++) {
(arr +i ) = i;
} //값을 돌려보기 위함
for (int i=0; i<100; i++){
printf("%d\n",
(arr +i));
} // 값을 돌려보기 위함
// 수정가능지역 끝

return 0;
}

  • // 문제 : main 함수 안에있는 int 값들 중 최대값을 출력해주세요.
    // 조건 : 변수 a만 사용 가능

#include <stdio.h>

int main(void) {
int a[10];

// 배열의 값 세팅
a[0] = -10;
a[1] = 10;
a[2] = 100;
a[3] = 210;
a[4] = 310;
a[5] = 1440;
a[6] = 1130;
a[7] = 33210;
a[8] = 1210;
a[9] = 33210;

// 반복문과 변수 a 사용 가능

int max_number = 0;

// 구현 시작
for(int i =0; i<10; i++) {
int current_num = a[i];
if(current_num > max_number){
max_number = current_num;
}

}
// 구현 끝 //배열문법

printf("최대값은 %d 입니다.\n", max_number);

return 0;
}

  • // 문제 : 아래 질문에 답해주세요.

/* 힌트

  • 변수에는 오직 값이 1개만 들어갈 수 있다.
    • int arr[3]; arr[0] = 100; arr[1] = 200; arr[2] = 300;
      • 여기서 arr에 100과 200과 300이 들어있다는 말은 틀린말입니다.
  • 포인터(주소값) 저장하는 변수는 무조건 8바이트 입니다.
  • 변수는 공간 1개만 관리합니다.
    • int a = 10; // a는 4바이트를 관리합니다.
    • int b = 20; // b는 4바이트를 관리합니다.
  • 변수 1개로 공간 100개 관리하려면?
    */

#include <stdio.h>

// 질문 : sub1 함수는 몇 바이트 짜리 함수 인가요?
void sub1() {
//0
}

// 질문 : sub2 함수는 몇 바이트 짜리 함수 인가요?
void sub2() {
int* arr; //포인트변수 -> 8
}

// 질문 : sub3 함수는 몇 바이트 짜리 함수 인가요?
void sub3() {
int arr[4]; //16
}

// 질문 : arr1의 메모리 구조와 arr2의 메모리 구조를 비교해서 설명해주세요.
void sub4() {
int arr1[4]; //16
int* arr2; // int만큼의 크기를 잡은 변수 -> 4
}

int main(void) {
sub1();
sub2();
sub3();
sub4();

return 0;
}

JAVA

  • static을 쓰려면 static상속 안에서 사용해야한다
  • 강제형변환은 ()를 사용해서 -> but 위험성이 크다
  • 무기클래스안에 상태를 하나 만들면 된다.

생성자 매소드

  • 생성자 함수=> 객체가 생성될때 실행 되는 함수!
    객체명과 동일한 이름의 함수
  • new 사람();
    ->생성자 함수가 실행된다.
  • #47강 1번
    package org.example;

// 출력 : 아래와 같이 출력되게 해주세요.

class Main {
public static void main(String[] aregs) {
new 사람().걷다(); // 사람 a사람 = new 사람();
System.out.println(new 사람().a왼팔.길이 + "cm");
// 출력 : 100cm
}
}
class 사람 {
팔 a왼팔;
void 걷다() {
System.out.println("사람 걷는다.");
}
사람(){
a왼팔 = new 팔();
a왼팔.길이=100;
}
}
class 팔{
int 길이;
}

  • 47강 복습하기

0개의 댓글