title: Array Type - Rules for assignment/use as function parameter
body: <p>when I need to pass an array to a function, it seems all the following declarations of the function will work</p>
  
  <pre><code>void f(int arr[])  
  void f(int arr[4]) // is this one correct?
  </code></pre>
  
  <p>for this:</p>
  
  <pre><code>int a[]={1,2,3,4};
  f(a);
  </code></pre>
  
  <p>But when I assign an array to another array, it fails</p>
  
  <pre><code>int a[]={1,2,3,4};
  int b[4] = a; // error: array must be initialized with a brace-enclosed initializer
  </code></pre>
  
  <p>So why an array passed as an argument of a function is okay, but used on the rhs of simple assignment is wrong?</p>