프로그래밍

 3198, 1/160 회원가입  로그인  
   good3951
   C언어 도움좀주세요. Call by address

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6556 [복사]


안녕하세요. C언어 프로그램에서 Call by address를 추가하고싶은데, 포인터의 대한 개념을 아무리봐도 이해를 못하겠습니다.

성적표 프로그램인데요. 메인함수내의 변수로해서 하라는데; 도대체 무슨말인지 모르겠습니다.

새내기인데ㅠ 도와주세요. 부탁드립니다. 어떤식으로 call by address를 추가하면 좋을까요ㅜㅜ?

#include<stdio.h>
#include <string.h>

struct student
{
  char name[5];
  int kor;
       int eng;
  int mat;
  int total;
      float average;
  int rank;
};

void main()
{
    struct student arr[100];
int i, num;

printf("몇명의 성적을 구하겠습니까?");
      scanf("%d", &num);

printf("성적을 입력하세요.\n");
for(i=0; i<num; i++)
{

  printf("%d번 학생의 이름, 국어, 영어, 수학 점수를 입력하세요 : ", i+1);
  scanf("%s %d %d %d", &arr[i].name, &arr[i].kor, &arr[i].eng, &arr[i].mat);
  arr[i].total = arr[i].kor + arr[i].eng + arr[i].mat;
  arr[i].average = arr[i].total/3;

    }

    printf("학생들의 성적을 출력합니다.\n");
    printf("순번\t이름\t국어\t영어\t수학\t총점\t평균\t순위\n");

     for(i=0; i<num; i++)
  {
   printf("%3d\t%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n",i+1, arr[i].name, arr[i].kor, arr[i].eng, arr[i].mat, arr[i].total, arr[i].average, arr[i].rank);
  }
}

  Hit : 5249     Date : 2016/06/09 07:41



    
zldejs22 * 이 글이 도움이 되셨으면 합니다 :)

* 앞서, main 함수 내에서 모든 프로그램의 동작을 구현하셨다는 가정에는 포인터를 쓸 이유가 없습니다.
* 일단, main함수를 기반으로, (1) 몇명의 성적을 구하는지? 를 입력받는 함수
(2) 성적을 사용자에게 입력받는 함수

* 크게 이렇게 2개로 나뉘어 함수(역할을 함수로 나눈다음에) 매개변수의 전달방법을 포인터(주소)로 하여 함수가 끝나더라도(지역변수의 소멸시점) main함수 내의 지역변수에 값이 전달되게 해야합니다.
2016/07/15  
zldejs22 함수, 포인터에 대한 공부가 반드시필요한 부분입니다.(화이팅!) 2016/07/15  
menial struct student arr[100]; --> struct student *arr[100];

scanf("%s %d %d %d", &arr[i]->name, &arr[i]->kor, &arr[i]->eng, &arr[i]->mat);
arr[i]->total = arr[i]->kor + arr[i]->eng + arr[i]->mat;
arr[i]->average = arr[i]->total/3;

printf("%3d\t%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n",i+1, arr[i]->name, arr[i]->kor, arr[i]->eng, arr[i]->mat, arr[i]->total, arr[i]->average, arr[i]->rank);


2018/11/21