아래 코드는 버그가 있다. int main(void) { int *x; int *y; x = malloc(sizeof(int)); *x = 42; *y = 13; } *x는 메모리가 할당되었기 때문에 포인터가 가리키는 곳에 42를 저장할 수 있다. 그러나 *y는 포인터로 선언만 됐을 뿐, 어디를 가리킬 지 정의되지 않았다. 이 상태에서 y에 13을 저장하게하니 버그가 발생한다. 그래서 *y을 초기화해주어야 한다. y = x; *y = 13; 버그를 없애려면, y가 x와 같은 곳을 가리키게 한 후 13을 저장하면 기존에 42가 13으로 덮어씌워지게 되며 버그가 사라진다. 출처: www.boostcourse.org/cs112
지금까지의 string은 C에서 존재하지 않는 자료형이며 cs50 라이브러리를 통해서만 쓸 수 있는 자료형이었다. cs50 라이브러리에서 string의 자료형은 아래와 같이 정의되어 있다.여기서 string은 어떤 char의 주소를 가지고 있는 변수를 의미한다. typedef char *string string s = "EMMA"는 char *s = "EMMA"로 표현한다. 이는 EMMA의 첫 문자인 E의 주소를 기억한다는 뜻이다. 문자열의 끝은 컴퓨터가 널 종단문자를 마주칠 때까지 루프를 돌며 알아낸다. #include int main(void) { char *s = "EMMA"; printf("%s\n", s); } s 변수는 문자에 대한 포인터가 되고 EMMA라는 문자열의 첫 번째 문자의 주소를 저..
#include int main(void) { int n = 50; int *p = &n; printf("%p\n", p); printf("%i\n", *p); } *는 포인터를 의미하고 *p는 변수 n의 주소를 가지게 된다. p는 int를 가리키는 포인터이다. 주소는 반드시 포인터에 저장해야한다. n의 주소를 담고 있는 p앞에 *를 붙이면 n의 값인 50이 출력된다. 추상적으로 p가 n을 가리키고 있다고 생각해도 된다. 출처: www.boostcourse.org/cs112
- Total
- Today
- Yesterday
- 선형검색
- Dom
- CSS
- 이벤트위임
- overflow
- 선택자
- malloc
- 함수
- sr-only
- 구조분해할당
- Big Ω
- float
- capturing
- 문자열
- 구조체
- 동기처리
- CSSOM
- 프로젝트
- 폼
- pseudo
- vanillajs
- intersectionObserver
- 비구조화할당
- valgrind
- RenderTree
- Typography
- form
- 연결리스트
- 포인터
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |