C언어 예시문제

익명 사용자의 이미지

2번 문제의 코드를 수정하여 출력한 문자열이 저장된 메모리의 주소를 문자열 앞에 추가
로 출력할 수 있게 하세요.
인데 답이

#include <stdio.h>
 
void main()
{
	char szBuffer[32] = {0};
	gets(szBuffer);
	printf("%p %s\n", szBuffer, szBuffer);
}

이네요...
왜 %p 가 추가되었으며, 왜 szBuffer가 한번 더 들어갔는지 알고 싶습니다.
설명하주세요.....

익명 사용자의 이미지

참고로 2번 코드는

#include <stdio.h>
 
void main()
{
	char szBuffer[32] = {0};
	gets(szBuffer);
	printf("%s\n", szBuffer);
}

이검니다.

익명 사용자의 이미지

일단 "print format string %p"로 찾아 보세요.

세벌의 이미지

첫번째 szBuffer 는 %p에 두번째 것은 %s에 대응됩니다.

익명 사용자의 이미지

답글들 너무감사합니다