You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 7-control-flow/README.md
+44-3Lines changed: 44 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -334,6 +334,47 @@ int main() {
334
334
}
335
335
```
336
336
337
+
## 포인터 초기화하기
338
+
339
+
초기화되지 않은 변수는 정의되지 않은 행동을 유발할 수 있기 때문에, 반드시 0 등으로 초기화하는 것이 좋습니다. 지금까지의 예제에선 포인터에 이미 있는 변수나 배열의 주소를 대입하거나, 포인터를 초기화하지 않거나 둘 중 하나였는데요, 포인터도 0으로 초기화하는 것이 좋습니다.
340
+
341
+
```c
342
+
intmain()
343
+
{
344
+
int *i = 0;
345
+
}
346
+
```
347
+
348
+
포인터를 0으로 초기화하면 장점이 있는데요, if문 등에서 조건식에 포인터를 사용했을 때, 포인터가 가지고 있는 주소가 0이면 그 조건식이 거짓이 된다는 것입니다. 다음 예제를 봐주세요.
349
+
350
+
```c
351
+
#include<stdio.h>
352
+
353
+
intmain()
354
+
{
355
+
int *i = 0, j; scanf("%d", &j);
356
+
357
+
if (j > 10) i = &j;
358
+
359
+
if (i)
360
+
printf("The pointer is pointing to some integer: %d", *i);
361
+
else
362
+
printf("The pointer is not pointing anywhere");
363
+
}
364
+
```
365
+
```
366
+
: 5
367
+
The pointer is not pointing anywhere
368
+
```
369
+
```
370
+
: 25
371
+
The pointer is pointing to some integer: 25
372
+
```
373
+
374
+
입력받은 값이 10 초과이면 포인터에 `j`의 주소를 대입하는 프로그램입니다. 맨 처음에 `0`으로 초기화되어있었기 때문에, 조건식으로 사용하면 `i`가 어떤 변수를 가리키는지, 안 가리키는지 알 수 있습니다.
375
+
376
+
> C++에서도 포인터에 0을 대입할 수는 있지만 0을 직접적으로 대입하는 것은 좋지 않은 습관입니다. C++에서 빈 포인터를 초기화하는 방법은 나중에 다루도록 하겠습니다.
377
+
337
378
## 조건 연산자(conditional operator)
338
379
339
380
[5장](../5-basic-operators)에서 연산자의 분류에 대해 설명했을 때, 피연산자가 세 개인 `삼항 연산자(ternary operator)`가 있다고 소개했습니다. 지금까지의 연산자는 단항 연산자이거나 이항 연산자였는데요, 삼항 연산자는 딱 하나 존재하는데, 바로 `조건 연산자(conditional operator)`입니다. 조건 연산자는 다음과 같이 씁니다.
@@ -412,8 +453,8 @@ int main()
412
453
}
413
454
```
414
455
```
415
-
:5
416
-
5 4 3 2 1
456
+
:5
457
+
5 4 3 2 1
417
458
```
418
459
419
460
`5 4 3 2 1 `이 출력된 과정은 다음과 같습니다.
@@ -497,7 +538,7 @@ do-while문도 C의 반복문 중 하나입니다. do-while문은 다음과 같
497
538
do <실행할 문장> while (<조건식>);
498
539
```
499
540
500
-
>>do-while문 끝에 붙어있는 세미콜론에 주의해주세요. 반드시 세미콜론이 붙어야 합니다.
541
+
> do-while문 끝에 붙어있는 세미콜론에 주의해주세요. 반드시 세미콜론이 붙어야 합니다.
0 commit comments