C언어에서 쓰레기값은 매번 실행할때마다 달라지는건가요?
배열의 초기화를 공부하고 있는데
int num[SIZE] ;이것처럼 중괄호 안에 숫자를 선언해주지않으면
쓰레기값이 출력된다는데 쓰레기값은 원래 매번 실행할때마다
달라져야하는건가요? 저는 계속 같은 숫자가 나오던데ㅠㅠ
쓰레기값이 바뀌기 위해서는 프로그램 자체가 완전이 종료 된 후 새로이 다른 프로그램이 실행되어야 바뀌는 것으로 알고 있습니다.
C언어로 프로그래밍을 하고 컴파일하는 동안에는 쓰레기 값이 바뀌지 않는 것이 맞는 것 같습니다.
프로그래밍을 하던 IDE 프로그램을 종료 후에 다시 실행하여 코딩을 한다면 그 때는 쓰레기 값이 바뀌지 않을까 싶습니다.
- #include <stdio.h> int main() { int num[10] ; printf("%d", num[0]); return 0; }
중괄호의 뜻은 생성할 배열의 갯수를 적는 것으로 알고 있습니다.
숫자를 적더라도 초기화를 해주지 않는다면 쓰레기 값이 들어 있는 것으로 알고 있습니다.
쓰레기값은 그때 그때 다른 것으로 알고 있습니다.
혹시 지속적으로 같다면 재부팅후에도 같은 값이 나오는지 확인을 해보는 것이 어떠할까 합니다.
변수가 생성되는 메모리 위치에 따라 틀려지겠죠
현재 num 으로 메모리구역이 설정된곳에 이미 저장되어 있는 값이 있고,
변형이 안되어 있기에 질문하신대로 같은 숫자가 나올수 있습니다
즉 변수선언으로 특정메모리 위치만 여기가 num 변수영역입니다~~라고 선언하고
초기화를 안해줘서 그런것입니다..
아무 변화도 없이 실행시키면 매번 메모리에 올라는 주소가 같아져서 같은 메모리 주소 값이 할당되고, 그 주소에 있는 값이 동일하게 표현되는 것이죠.
이처럼, 같은 프로세스를 컴파일하고 메모리에서 동작에서 동작시키면 쓰레기 값이 같아지지만 다른 변수도 선언하시던가 다른 프로세스를 실행하시던가 하시면 쓰레기 값이 변하게 됩니다.