구조체 포인터로 구조체에 접근할때 의문
딥자두
질문 제목 : 구조체 포인터로 구조체 접근할때 아래 소스의 의문아래 소스는 검색하다 발견한 소스인데 구조체 포인터로
구조체에 접근할때 - 자가 아닌 . 연산자로 했더군요 전 - 이 연산자만 되는줄 알았거든요
이상해서 임의로 . 연산자로 이렇게 저렇게 막데이터를 넣어 봤는데
문자열넣은건 다에러가 나고, int 형 숫자넣을땐 컴팓일되고 출력도 되는데
이에 관해서 설명을 듣고 싶습니다
녹색글은 원본 뻘건근을 제가 임의로 막넣어본거에요
질문 내용 :
#include stdio.h
#include stdlib.h
int main()
{
struct student{
char name[10];
int age;
};
struct student *s;//구조체 포인터 선언
int cnt,i;
printf(입력할 학생 수 : );
scanf(%d,&cnt);
s=(struct student*)malloc(sizeof(struct student)*cnt); //구조체 할당을 받았습니다.
for(i=0;icnt;i++)
{
printf(이름 : );
//scanf(%s,s[i].name); // 원본 주석처리
s[i].name=kim; // 대체 수정 컴파일시 에러
(*(s[i])).name=kim;//대체 수정 컴파일시 에러
printf(나이 : );
//scanf(%d,&s[i].age); // 원본 주석처리
s[i].age=99; // 수정 컴파일됨 출력도 됨
}
for(i=0;icnt;i++)
printf(이름 : %s 나이 %d\n,s[i].name,s[i].age);
return 0;
}
-
푸른나무
문자열 기본을 까먹었었네요
포인터쪽은 좀 더 뒤저보면서
첫 댓글을 이해해봐야겠네요
답변 감사합니다 -
보아라
제겐 말이 조금 어렵네요 뻘건 두번째줄하고 관련된거 같기도 하궁
s[i].name=\kim\; --이건 안되는데
s[i].age=99; --- 이건 되는데
이내용도 이해가 안되구요 ㅠ_ -
푸르나
배열 연산자(pointer[index]) 자체가 *(pointer+index)의 syntax sugar입니다.