C언어 기초
포인터 주소로 원래 변수 훼손하기
// 문제 : 원본값을 훼손하는 change 함수를 만들어주세요.
#include <stdio.h>
// 수정가능지역 시작
void change() {
int num; // stack으로 변수 num의 메모리 할당
int* p = &num + 11; // num과 x의 변수의 주소 차이는 44이므로 +11 입력
*p = 30; // &num + 11 = &x 이므로 *(&x) = 30; == x = 30; 이다.
printf("== change 함수 시작 ==\\n");
printf("&num : %ld\\n", (long)&num);
printf("== change 함수 끝 ==\\n");
}
// 수정가능지역 끝
int main(void) {
int x = 20; // stack으로 변수 x의 메모리 할당
printf("&x : %ld\\n", (long)&x);
printf("change 함수 호출하기 전의 x : %d\\n", x);
change();
printf("change 함수 호출한 후의 x : %d\\n", x);
// 출력 => change 함수 호출한 후의 x : 50
return 0;
}
다중 포인터
int a = 10; // 10을 가진다
int* pa = &a; // a의 주소
int** paa = &pa; // pa의 주소
// a == *pa;
// a == *(&a);
// a == **paa;
// 문제 : 원본값을 훼손하는 change 함수를 만들어주세요.(2중포인터)
#include <stdio.h>
void change(int** num) {
**num = 50; // *p = 50;
}
int main(void) {
int x = 20;
int* p = &x;
printf("change 함수 호출하기 전의 x : %d\\n", x);
change(&p);
printf("change 함수 호출한 후의 x : %d\\n", x);
// 출력 => change 함수 호출한 후의 x : 50
return 0;
}
포인터 사용 이유
- Git에 활용된다.
- 본질 : 공간은 움직일 수 없다.
- 공간은 위치를 알려주고, 사용할 수 있도록 하는 것 외에는 아무것도 할 수 없다.
- 변수는 메모리의 공간을 할당
- 큰 데이터를 공유하고, 공간을 효율적으로 사용할 수 있다.
→ 속도, 메모리 효율을 끌어올릴 수 있다. - 메모리 공간의 사용을 확인하고, 변경하기 위해서는 주소를 확인해야 한다.
- 그 주소가 포인터이다.
Git
- git commit : git 저장소 디렉토리 안에 있는 모든 파일에 대한 스냅샷을 기록하는 것
- commit을 할 때마다 이전버전과 다음버전의 변경내용 저장 - git brench : 특정 커밋에 대한 참조
- 하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역 - .git 의 특정폴더 기준 10,000개의 파일 이후로 성능이 저하된다.
- commit을 할 경우 index의 복사본이 생성
→ tree로 생성된다. - 파일의 이름이 아닌 내용을 Hash(sha1) 하여 index에 저장
- 내용이 Hash 된 앞의 두 글자(”e9”)의 폴더 안에 나머지 글을 이름으로 하는 파일 생성
directory folder
→ echo a.txt생성 > a.txt // new file 생성
→ echo b.txt생성 > b.txt
→ git add . // folder 내 file들을 workspace → index로 이동
→ git commit -m "메세지" // index → local repository 로 이동
→ git push origin master // master brench로 push (local repository → **remote repository)**
// push 이용 시 pull 진행 후 변경했는지 확인 필요(충돌 발생)
**!** git pull origin mater // remote repository → workspace
GatsBy
- JAM Stack을 활용한 “정적 사이트” 생성기
- gatsby 설치 : npm install -g gatsby-cli
- 새로운 project 생성 : gatsby new
후기 : 이번주에 들어서면서 조금 어려운감이 많다. 조금만 더 열심히 따라가려 노력해보자 제발 화이팅 성공하자
'멋쟁이 사자처럼 BE School' 카테고리의 다른 글
[멋쟁이사자처럼 Back-End School 1기] Day 11. C언어, Java (0) | 2022.06.29 |
---|---|
[멋쟁이사자처럼 Back-End School 1기] Day 10. Git, GatsBy (0) | 2022.06.28 |
[멋쟁이사자처럼 Back-End School 1기] Day 8. 포인터, Git, Linux명령어, Java실습 (0) | 2022.06.24 |
[멋쟁이사자처럼 Back-End School 1기] Day 7. 컴퓨터 공학, 포인터, Java (0) | 2022.06.23 |
[멋쟁이사자처럼 Back-End School 1기] Day 6. C언어 함수, FLEX, DOM, BOM, JQuery (0) | 2022.06.22 |