변수 메모리 확인, main함수, printf함수 관련 질문입니다.

jun318zz의 이미지

질문이 3가지인데요.

1.프로그램 내 변수의 메모리 할당 내용을 시각적으로 확인할 수 있나요?
예전에 공부할 때 메모리 덤프? dump? 등등의 키워드가 기억이 나긴합니다.

2. main(), main(void)는 어떤 차이가 있나요?

3. printf(“10”); 과 printf(“%d”,10)는 어떤 차이가 있나요?

qkrwncks593의 이미지

1. 무슨 소리신지 이해가 불가능 ..
2. main() , main(void) 는 아무런 차이가 없습니다. 그저 c언어에서 main() 함수에 인자가 없다는걸 표시할때 void 를 적거나 생략합니다.
자세한건 void 쓰기전과 사용후 프로그램의 main 함수를 디스어셈 해보면 차이가 없는걸 볼수 있습니다.
3. 3번 또한 디스어셈으로 봐야 명확하게 볼수있습니다... 설명하자면 전자는 "10" 이 저장된 문자열주소를 인자를 주어서 출력시킨것이고 후자는 %d 형식으로 정수 10 을 출력하라는 소리입니다.
어셈으로 직접짜보면..

전자
--
push 123F1000 // "10" 의 문자열주소
call printf

후자
--
push 10
push 123F1000 // "%d" 의 문자열주소
call printf