Here's what I did:
#include <stdio.h>
#include <string.h>
int main() {
    char name[] = "longname";
    printf("Name = %s \n",name);
    strcpy(name,"evenlongername");
    printf("Name = %s \n",name);
    printf("size of the array is : %d",sizeof(name));
    return 0;
}
It works, but how? I thought that once memory is assigned to an array in a program, it is not possible to change it. But, the output of this program is:
Name = longname 
Name = evenlongername 
size of the array is 9
So the compiler affirms that the size of the array is still 9. How is it able to store the word 'evenlongername' which has a size of 15 bytes (including the string terminator)?
 
     
     
     
    