typedef struct _pet
{
char name[10];
char* address;
   ..
   ..
   ......

}PET;

void main()
{
PET jindo;
//이제 구조체를 초기화 해봅시다

jindo.name="duru";       // 1번
jindo.address="Seoul";   // 2번
  ..
  ..
  .....
//구조체의 멤버와 영역이 다른 변수들
char name[10]="두루2";  //3번
char* address="서울2";   //4번

}

컴파일이 과연 될까요?
에러가 나는데 그 이유는 무엇일까요?












에러는 1번에서만 발생합니다...
구조체에서는 문자형 배열은 초기화할때
1.  strcpy(name,"duru");
2.  jindo={"duru","Seoul",  ...  , ... ,};
이런 식으로 해야되지요

구조체뿐만 아니라 변수역시
char name[10]="두루2";는 가능하지만
char name[10]; name="두루2"는 불가능합니다

반면 포인터로 선언할때는
char* address="서울2";과
char* address; address="서울2"; 둘다 가능하지요

배열의 이름이 혼자 쓰일때 포인터와 같은 기능을 하지만 초기화에서는
차이가 나는군요...
그래서 구조체에서는 배열보다는 포인터로 선언하는게 좋겟네요

윈도우 프로그래밍에서
WNDCLASS winclass;
..
..
winclass.lpszClassName="test";
winclass.lpfnWndProc="WndProc";
..
..
문제 없이 컴파일되는것을 보아 포인터형으로 선언된거라고 유추할수있겠군요(lp...에서 알수있지만);

배열과 포인터에서 차이가 나는 이유는 무엇일까요?각자 생각을 리플로 좀 ^^ 달아주심 감사