수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

포인터 배열과 구조체의 이용에서의 문제점... (해결 부탁)

보람

2023.04.01

질문 제목 :
포인터 배열을 활용한 시언어서의 구조체의 활용에서의 궁금증

포인터 배열과 구조체 사이에서 실해이 안된 다는 거지는 알겟지만 확실 한 이유를 모른다.

질문 내용 :
일단 c++, c언어를 1년 정도 비베와 함께 배운 사람입니다.
일단, 저의 질문을 잘 이해시키기 위해 하나의 예제를 올리겠습니다.

예제1)
**생략**
int arr[4] = {1, 2, 3, 4};
int *p;
int i;
p = arr;
for(i = 0; i 4; i++)
{
printf(%d, *(p + i));
}
**생략**

이렇게 실행하게 되면 포인트 배열의 특직상 싫행이 되고 콘솔에는 1, 2, 3, 4가 나오게 됩니다. 하지만 밑에 있는것이 제가 잘 모르는 부분입니다.

#includestdio.h
void main()
{
struct sinsang
{
int hackbun;
char name[15];
int age;
char hobby[30];
};
struct sinsang sin[3] = {{17, 강승윤, 16, 컴퓨터}, {21, 김미진, 16, 놀기}, {12, 윤아영, 16, 잠자기}};
struct sinsang *sin_chart;
sin_chart = sin;
int i = 0;
for(i = 0; i 3; i++)
{
printf(학번 : %d\n, *(sin_chart + i));
printf(이름 : %s\n, *(sin_chart + i));
printf(나이 : %d\n, *(sin_chart + i));
printf(취미 : %s\n, *(sin_chart + i));
}
}

이렇게 되면 제가 원하는 방식대로 콘솔에 나오지가 않고 컴파일을 하게 되면 에러가 나오게 됩니다. 그래서 제가 포인터의 개념을 잘 생각해보았습니다. 일정한 메모리 안에 넣은 다음에 실행 시키는 것이기에 안나오는 것같기도 합니다만. 하여튼 실행이 안된다는 건 확실한데 정확한 이유를 잘 모르겠습니다. 정확한 이유 답변 해 주 실 수 있는 분 부탁드립니다. 그리고 더 이상한 점은 printf(학번 : %d\n, *(sin_chart + i));
printf(이름 : %s\n, *(sin_chart + i));
printf(나이 : %d\n, *(sin_chart + i));
printf(취미 : %s\n, *(sin_chart + i));
에서만 에러가 나왔다는 점입니다. 제가 영어를 해석 해 보았는데 다른데서 에러가 나오는 이유는 여기때문에 그런 거였습니다. 그래서 이러한 이유도 정확하게 부탁드리고여 고칠 수 있는 방법 부탁드립니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 찬

    *(sin_chart + i) 이것은 sin[0](i = 0 이라고 할경우) 와 같습니다. sin_chart는 아시다시피 구조체의 포인터이고 이 포인터로 하여금 i 만큼 이동한다는 뜻이 되는거죠 고로 *만 없다면 &sin_chart[i] 이거와 같게 되는거죠
    배열의 주소가 되는거죠. 거기에 *을 붙였으니 값이 되는거죠. 고로 안의 내용들을 출력하기 위해서는
    (*(sin_chat + i)).hackbun
    (*(sin_chart + i)).name
    (*(s

  • 콩알녀

    윗분 말씀대로인듯 하신데
    서적에서 구조체부분을 다시 한번 보시길 바랍니다.
    구조체는 관련있는 변수끼리 하나로 묶어 만든 사용자 정의의 타입이잖아용
    구조체 변수를 선언하시고 그 참조 하시고 싶으신 구조체의 멤버변수를 사용하실때는
    구조체변수.멤버변수 이렇게 .으로 참조하시면되고요
    원하시는건 구조체형 포인터니까
    *(구조체형포인터변수+i).멤버변수 하시면 되겠네요 *(구조체변수+i) 를 ( )로 한번 더 감싸야하는지는 까묵어서;
    다른표현방법은
    구조체형 포인터일

  • 큰꽃들

    음....

    먼저 가장 궁금한건 질문하시는 분은

    printf(\이름 : %s\\n\

번호 제 목 글쓴이 날짜
2697634 c언어로 감성사전 만들기! (1) 도란도란 2025-06-09
2697605 이 함수좀... agine 2025-06-09
2697574 배열 기본적인질문 (3) 민트향 2025-06-09
2697549 배열 초기화 (4) 나리 2025-06-08
2697465 수다님...^^ (2) 가론 2025-06-08
2697432 서버 만드는 함수에서 궁금한게있어요~ 파랑 2025-06-07
2697401 열혈강의 문제오류 (1) 꿈 2025-06-07
2697374 기초적인 C언어 프로그래밍 입니다. 얼 2025-06-07
2697341 좌우대칭 문제인데 Q가 입력되면 종료가 되야하는데 되지않습니다 무지개 2025-06-07
2697314 fprintf와 fscanf 로 파일 입출력 할떄 밝음이 2025-06-06
2697293 툴 소스 뽑아내는법 도움 2025-06-06
2697264 소소한거 두어가지 질문할께요~ (8) 별솔 2025-06-06
2697235 scanf로 인풋 받을 때?! 보담 2025-06-06
2697207 열혈강의 연습문제 질문이요~ (2) 맥적다 2025-06-05
2697182 strcmp, strtok - 어떤 기능을 하는지... 루다 2025-06-05
2697129 [질문] 아래 저축액을 계산하는 프로그램 ㅠ 추가 질문 (7) 찬늘 2025-06-05
2697072 쌩초보 질문! (1) 얀 2025-06-04
2697050 도움부탁드립니다.. 화이트 2025-06-04
2697023 gotoxy함수, 어떻게 사용하죠? (3) 적송 2025-06-04
2696994 c언어를 막 시작한 초보인데 질문이 있어용 ㅠㅠ (2) 귀1여운렩 2025-06-03
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com