수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • 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\

번호 제 목 글쓴이 날짜
2704497 int double char 같은것좀 좀만 더 가르쳐 주세요 (6) 로지 2025-08-10
2704473 구조체 배열 초기화 질문 꽃은별 2025-08-10
2704445 배열과 조건문에 관한질문 (3) 찬솔큰 2025-08-10
2704417 이진 트리 깊이 값 구하는것 질문입니다. 푸른잎 2025-08-10
2704391 자료 유형에 관련된 문제입니다. (2) 늘솜 2025-08-09
2704365 c언어 문제안되서물어봅니다 (3) 맑은가람 2025-08-09
2704338 다항식의 뺄셈에 대해 질문드립니다... (1) 여자 2025-08-09
2704311 센서를 이용한 라인 주행인데 명령어좀 알려주세요 ㅠ_ㅠ (3) 초록이 2025-08-09
2704284 배열for문;; (3) 은솜 2025-08-08
2704255 readline(int fd, char *buf, int nbytes)함수를 구현하는법좀..ㅠㅠ 파라나 2025-08-08
2704196 간단한 c언어좀 만들어주세요 (2) 슬S2아 2025-08-08
2704118 성적에서 등수 구하기 (4) 딥레드 2025-08-07
2704062 알고리즘 알려주세요 나리 2025-08-06
2704035 답은 나오는데 과정에서 `` 약간 이상합니다.ㅎㅎ 답만나와버려요 핫블랙 2025-08-06
2703979 문자열 EEPROM 작성 방법 문의드립니다. 그녀는귀여웠다 2025-08-06
2703954 키보드를 입력하면 캐릭터를 움직이기 질문 (7) 좋아해 2025-08-05
2703924 계속 에러가... (4) 눈꽃 2025-08-05
2703897 배열의 최댓값과 최솟값 차이 구하기 (1) 하늬 2025-08-05
2703869 C언어 질문입니다 급해용!!! ㅠㅠ (2) 덕이 2025-08-05
2703814 C로 프로그램을 만들때 도스창 말고 다르게 만드는방법이 있을까요? (2) 소심한여자 2025-08-04
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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