포인터 배열과 구조체의 이용에서의 문제점... (해결 부탁)
보람
질문 제목 :
포인터 배열을 활용한 시언어서의 구조체의 활용에서의 궁금증
포인터 배열과 구조체 사이에서 실해이 안된 다는 거지는 알겟지만 확실 한 이유를 모른다.
질문 내용 :
일단 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));
에서만 에러가 나왔다는 점입니다. 제가 영어를 해석 해 보았는데 다른데서 에러가 나오는 이유는 여기때문에 그런 거였습니다. 그래서 이러한 이유도 정확하게 부탁드리고여 고칠 수 있는 방법 부탁드립니다.
-
찬
*(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\
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2698938 | c언어 메모리질문 (3) | 나래 | 2025-06-21 |
2698909 | 서비스 요청 고객 관리 프로그램 짜는것좀 도와주세요ㅜㅜ (4) | 궁수자리 | 2025-06-21 |
2698882 | 프로그래밍좀 짜주세요 (3) | 황예 | 2025-06-21 |
2698855 | 카프-라빈 알고리즘 코딩 분석좀 도와주세요.. | 꽃봄 | 2025-06-20 |
2698829 | 학점계산기 (7) | MyWay | 2025-06-20 |
2698782 | 기초적인 함수 질문이요ㅠㅠㅠㅠ | 내담 | 2025-06-20 |
2698749 | 프로그램 짜던 도중 패닉입니다...ㅜ | 파랑 | 2025-06-19 |
2698719 | 조건부컴파일 질문입니다.~ (2) | 큐트 | 2025-06-19 |
2698693 | 재귀 함수 에러 | 바닐라 | 2025-06-19 |
2698673 | 고민이있는데 들어좀주세요!! (1) | 초코맛캔디 | 2025-06-19 |
2698644 | 1부터 n까지의 합을 구하는데 엄청긴숫자의 합을 구할때는 어떻게 해야하나요? (4) | 슬우 | 2025-06-18 |
2698616 | 다른 함수로 안넘어갑니다..;;; | 도1도캣 | 2025-06-18 |
2698587 | 배열하다 막혀서... (3) | WhiteCat | 2025-06-18 |
2698559 | 문자열을 비우는방법 (2) | 하늘 | 2025-06-18 |
2698528 | 착하고 친절한 선생씌구해염~ㅋㅋ (4) | 옆집언니야 | 2025-06-17 |
2698502 | 자료구조 큐 | 캔서 | 2025-06-17 |
2698477 | 실행화면 배경문의요 | 선아 | 2025-06-17 |
2698430 | 변수의 값이 저장이 않되네요;; (4) | 피네 | 2025-06-16 |
2698404 | C#을 배울려고 하는데 C나 C++을 알아야 하나요 ?? (1) | 신당 | 2025-06-16 |
2698342 | 프로그램 질문점녀 (4) | 데빌의눈물 | 2025-06-16 |