
메모리에 저장공간 마련하기
그 저장공간안에 있던 garbage value 를 원하는 값으로 바꾼다.
아래의 C 코드에서 a, b, c 를 각각 두 번 출력한다.
첫번째 출력 때는,
a = 10
b = 10
c = 20
이 출력될 것이다.
근데 a의 값을 5로 변경한 후 다시 각 변수의 값을 출력하면?
어떤 값들이 출력될지 예상해보자.
#include <stdio.h>
int main(void)
{
int a;
int b, c;
a = 10;
b = a;
c = a + 10;
// 각 변수 값 확인
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
// a 변경 후 각 변수 값 확인
a= 5;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
}
정답은..
a = 5
b = 10
c = 20
이 될 것이다.
왜냐하면, 위 코드에서
b = a;
는 a의 현재 값을 복사해서 b에 넣는다는 뜻이기 때문이다.
여기서 덤으로 파이썬은 항상 '참조 복사'를 하고,
C#은 자료형에 따라 int, float, bool, struct 등은 값 복사 / class, array, string, object는 참조 복사를 한다.
또한, C에서 참조복사를 쓰려면 그 유명한 포인터를 사용해야한다!!
| [CS기초] [C언어] 문자열 (0) | 2025.11.30 |
|---|---|
| [CS기초] [C언어] 정수 자료형과 실수 자료형 (0) | 2025.11.29 |
| [CS기초] [C언어] 컴퓨터의 실수 표현 (2) | 2025.11.28 |
| [CS기초] [C언어] 컴퓨터의 음수 표현 (2의 보수법) (0) | 2025.11.27 |
| [CS기초] [C언어] 비트(bit)와 정수 표현 (0) | 2025.11.27 |