포인터 배열과 구조체의 이용에서의 문제점... (해결 부탁)
보람
질문 제목 :
포인터 배열을 활용한 시언어서의 구조체의 활용에서의 궁금증
포인터 배열과 구조체 사이에서 실해이 안된 다는 거지는 알겟지만 확실 한 이유를 모른다.
질문 내용 :
일단 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\
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2697924 | 다차원 배열 질문있습니다 | 두동 | 2025-06-12 |
2697893 | 정올 :: 기초다지기 a9007 배열7 (문제가 이상함 -_-) | 흰두루 | 2025-06-12 |
2697862 | Unable......... 지정된 파일을 찾을 수 없습니다!! (1) | Creator | 2025-06-11 |
2697761 | 그러니까여제말은... (2) | 새론 | 2025-06-10 |
2697737 | 정올 문제좀 풀어보신분~ | 레오 | 2025-06-10 |
2697709 | rand함수 질문좀요! (6) | 가막새 | 2025-06-10 |
2697683 | C언어 변수뒤 표시가 이해안되는게 있습니다. | 소미 | 2025-06-10 |
2697660 | 껍데기딜 만들고 난후 어느핫키 누르면 코드검색이라도 뜨고 그다음 무반응 해결좀 (2) | 움찬 | 2025-06-09 |
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 |