int main()과 int main(void)의 차이가 무엇인가요?

구글에 검색해봐도 좀헷갈리네요ㅜㅜ

그리고 return 0;이 함수가 정상적으로 종료됐다고 0을 반환하는거라고 하던데

이 0값을 변수등으로 설정해서 함수가 잘됐나 잘못됐나 판별하는등 디버깅 용도로 쓰이는건가요?