구조체 포인터 질문인데
글쓴이: 바이러스 / 작성시간: 목, 2003/11/06 - 7:18오후
/********************구조체를 이용한 성적 프로그램************ 학생수10명에 대한 국어,영어,수학 성적을 받는다 **************************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _student{ char *name[10]; int *number[3]; }Student; void main() { Student *pStu; for(int i=0;i<10;i++) { pStu=(Student *)malloc(sizeof(Student)); pStu->name=(char *)malloc(sizeof(char)); pStu->number(int *)malloc(sizeof(int)); memeset(pStr->name,0,sizeof(char)); memeset(pStr->number,0,sizeof(int)); scanf("%s",&pStu->name); for(int j=0;j<3;i++) { scanf("%d\",&pStu->number); } pStu++; } pStu=Student; for(int i=0;i<10;i++) { printf("%s",pStu->name); for(int j=0;j<3;i++) { printf("%s",pStu->number); } pStu++; } pStu=Student; for(int i=0;i<10;i++) { free(pStu->number); free(pStu->name); free(pStu->pStr); pStu++; } }
아직 포인터 개념이 확실히 안서서 그런데 소스보시고 지적 바랍니다
좀더 간단히 하거나 빠진 부분있으면 체크해주세요
수고하세요
Forums:
[code:1]/********************구조체를 이용한
돌아간다고 해도 버퍼오버플로우가 무조건 일어나고
세그폴트를 구경하실 수 있으실 듯 =3=33
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
Re: 구조체 포인터 질문인데
개념이 좀 안 서신게 분명한듯 합니다.
먼저 구조체에서는
char *name[10];
int *number[3];
포인터의 배열이 되나요? 배열로 쓰시려고 선언한듯 한데... 구태여 앞에 *를 붙여서 강조(?)하실 필요는 없겠죠. 따라서 아래쪽에서도 메모리를 할당해(malloc)줄 필요가 없겠죠?
두번째로
Student *pStu;
for(int i=0;i<10;i++)
{
pStu++;
}
상당히 납득이 안가는 부분입니다. :) 저런식으로 코드를 작성하시면.. 음음! 할당되지 않은 영역을 엑세스 하는것이 되겠죠. 음.. pStu에 Strudent만큼의 메모리를 할당하였지만, 그 뒷부분까지 메모리를 할당해준것은 아니니까요. Linked list라던가 이부분에서 차라리 포인터 배열을 쓰심이.. ;; 어떨런지요.
------------------
나는 바보
[code:1]/********************구조체를 이용한
정상적으로 돌아가게 하려면 이런식으로 하셔야 합니다..
고치면서 보니까.. 중간중간 무슨 생각으로 하셨는지 대강
이해할거 같긴 했는데..
테스트도 안해보신것과..-_-;;
잘못된 발상이 보이더군요..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
음 malloc할당한 이유는 동적으로 메모리 할당을 할려고 했습니다
음 malloc할당한 이유는 동적으로
메모리 할당을 할려고 했습니다
typedef struct {
char name[10];
int number[3];
} Student;
<==요부분은 제가 잘못적었군요 지적감사합니다
Student *pStu[10]; <==이런식으로
포인터를 잡으면 안되나요?
사람이 죽은뒤에 영혼이라는 것이 과연 존재 할까?죽음으로써 해답을 찾아보자...
[quote="sakai83"]음 malloc할당한 이유는 동적으로
------------------
나는 바보
댓글 달기