title: Can the array's default pointer be changed in anyways?
body: <pre><code>#include&lt;stdio.h&gt;
  
  void change(int (*arr)[10]){
    // manipulate
  }
  
  int main(){
    int arrM[10]={1,2,3,4,5,6,7,8,9,0};
    change(&amp;arrM)
  }
  </code></pre>
  
  <p>I am aware that the arrM is a constant pointer and cannot be changed or assigned and also that it cannot be passed as a pointer to pointer like **argv since it degrades to a pointer from an array and not a pointer to pointer. But my question is "Is this the way the design goes so as to protect the array's initial memory from not getting overwritten(if yes the how?) or is there a mechanism that can get into the //manipulate region that can change the constant pointer arrM's value"</p>