강사님이 지역변수에 관해 강의를 하시는데

이소스를 사용했습니다.

class Block
{
 public static void main(String[] args)
 {
  int a = 100;
  int b = 35;
  {
   int b=35;
   System.out.println(\"변수 a= \"+a+\"변수 b=\"+b);
  }
  System.out.println(\"변수 a= \"+a+\"변수 b=\"+b);

  System.out.println(\"Hello World!\");
 }
}

근데 이소스가 c언어 에서는 돌아가네요
#include<stdio.h>
int main(void)
{
 int a[5] = {100,1,2,3,4};
  int b=35;
  {
   int b=35;
   printf(\"변수주소0x%p\\n\",&b);
  }
  printf(\"변수주소0x%p\",&b);
}
도데체 무슨 차이길래 c는 지역변수 재선언을 허용하고 java는 이미 선언되었이다고 않될까요?

알려주세요 ㅠㅠ