title: Error: assignment to expression with array type with number
body: <p>I want to really know why did I get this error when working with numbers that stored in array? I saw similar error when people only working with string. This is the line that of code that get the error:</p>
  <ol>
  <li><code>55 |          data[j + 1].score1 = data[j].score1;</code></li>
  <li><code>59 |          data[j + 1].score1 = key;</code></li>
  <li><code>69 |          data[j + 1].score1 = data[j].score1;</code></li>
  <li><code>73 |          data[j + 1].score1 = key;</code>
  <br/></li>
  </ol>
  <p>This is the code I'm working with:<br /></p>
  <pre><code>struct input{
      float minimum, maximum;
      int many;
  }input1;
  
  struct input2{
      float score1[100];
      char name1[100];
  };
  
  void swapname(char *a, char *b){
      char z[1000];
      strcpy(z, a);
      strcpy(a, b);
      strcpy(b, z);
  }
  
  void insertionSort(int type, struct input2 data[100]) { 
      int step;
  
     if (type == 1){//desc
       int size = input1.many;
       for (step = 1; step &lt; size; step++) { 
           float key = *data[step].score1; 
           int j = step - 1; 
    
           while (key &gt; *data[j].score1 &amp;&amp; j &gt;= 0) { 
               data[j + 1].score1 = data[j].score1; 
           swapname(data[j+1].name1, data[j].name1);
               j = j - 1; 
           } 
           data[j + 1].score1 = key; 
       } 
     }
     else if (type == 2){//asc 
       int size = input1.many;
       for (step = 1; step &lt; size; step++) { 
           float key = *data[step].score1; 
           int j = step - 1; 
    
           while (key &lt; *data[j].score1 &amp;&amp; j &gt;= 0) { 
               data[j + 1].score1 = data[j].score1; 
           swapname(data[j+1].name1, data[j].name1);
           j = j - 1;
           } 
           data[j + 1].score1 = key; 
       } 
     }
  
  } 
  </code></pre>