본문 바로가기

멋쟁이 사자처럼 BE School

[멋쟁이사자처럼 Back-End School 1기] Day 8. 포인터, Git, Linux명령어, Java실습

C언어

포인터

  • &i : 변수의 주소 반환

❗주소의 값이 큰 이유 : RAM의 가장 큰 구간부터 데이터가 쌓이기 때문
   → 지역변수는 Stack으로 쌓여 아래(가장 큰 메모리 크기) 부터 채워진다.

  • 같은 객체 내 지역변수의 (가상)메모리 주소는 비슷하게 나온다.
    - 먼저 넣은 변수 주소의 값이 더 크다.
      → 메모리를 효율적으로 사용해야 하기 때문에 옆으로 넣는다.
  • * : 해당 메모리 주소로 간다~
    - int* p : int변수의 주소가 들어간다.
    - 메모리의 주소로 이동한다.
  • int* p 의 size는 8byte이다.
    - 모든 포인터 크기는 8byte
    - CPU워드마다 크기는 달라진다.
  • p = &a;
    - p는 a의 주소를 가진다
  • 근처에 있는 주소를 가진 변수 2개 있으면 그 변수의 주소를 모두 다 외울 필요는 없다.
#include <stdio.h>

int main(void) {
  int a = 10;
  int b = 20;

  int* p;
  
  // 수정가능 시작
  p = &a;
  *p = 100;

  p = &a - 1; // &a-1 = &b -> a의 한칸 -> a의 주소를 이용하여 입력
  *p = 300;
  // 수정가능 끝

  printf("a : %d\\n", a);
  // 출력 => a : 100
  printf("b : %d\\n", b);
  // 출력 => b : 200

  return 0;
}
  • 무언가를 가리킬 때 포인터(주소, 위치) + 크기정보(int, char)가 필요하다.

GIT

  • working / stage / repository 영역으로 나뉜다
  • working 영역의 변경사항을 따로따로 repository에 저장 가능

명령어

  • touch 파일명 : 파일 생성
  • mkdir : directory 생성
    - p : 한번에 생성
  • rm : 파일 삭제
  • cd : 폴더 이동
  • pwd : 자신의 위치 경로 출력
  • whoami : 내가 누구인가.
  • echo “~~~” : ~~~출력
    - n : 한줄로 출력
  • echo “~~~~” > 파일이름 : 파일이름에 텍스트(~) 입력
  • git status : working영역과 repository의 차이점 입력
  • git add : working → stage 영역으로 이동
  • git rm —cached : stage → working 영역으로 재위치
  • git commit : stage → repository 영역으로 이동
  • git config user.name : git에 저장되어 있는 아이디 출력
  • git config user.email : git에 저장되어 있는 이메일 출력
    - git config —global user.name or user.email : 모든 프로젝트에 설정할 아이디와 이메일
  • git log : commit 로그 기록(해당 커밋 로그 기준)
  • git checkout : 특정 commit버전으로 전환
  • echo .idea > .gitignore / echo target >> .gitignore : repository의 기본 설정
  • git remote add origin 레포지토리 주소 : 해당 레포지토리 주소에 커밋
  • git push origin master : master 브랜치로 push

vi vim 명령어

  • a : insert 모드
  • esc : menu 모드
  • :q : 빠져나가기(!를 붙이면 강제 실행)
  • :wq! : 저장 후 나가기
  • :w : 저장하기

Java 실습

public class chapter5 {
    public static void main(String[] args) {
        Car3 car1 = new Car3(100);
        Car3 car2 = new Car3(200);

        car1.run();
        car2.run();
    }
}

class Car3 {
    int max_speed;
    
    public Car3(int max_speed) {
        this.max_speed = max_speed;    
    }
    
    void run() {
        System.out.println("자동차가 최고속력 " + max_speed + "로 달립니다.");
    }
}

 

후기 : 오늘은 포인터 부분에서 약간 헷갈렸다. 그래도 할만은 해서 다행이다. 수업을 하면 할수록 어려워 지지만 따라가려고 노력 많이해야겠다. 화이팅