atribuindo uma string a outra string

Por que este código não está sendo executado? Por que str1 não está atribuído a str2? Eu sei que tenho uma opção de usar strcpy mas gostaria de saber o motivo pelo qual isso não está funcionando?

#include<stdio.h>
int main()
{
char str1[]="hello";
char str2[10];
str2=str1;
printf("%s",str2);
return 0;
}

Considerando que se eu usar ponteiros do que funciona como aqui ..

#include<stdio.h>
int main()
(
char *s="good morning";
char *q;
q=s;
while(*q!='\0')
{
printf("%c",*q);
q++;
}
return 0;
}

Isso funciona. Agora a cadeia foi copiada via ponteiros então porque tal diferença?

questionAnswers(5)

yourAnswerToTheQuestion