제가 학교 과제가 있어서 풀엇는데
과제 내용이
10개의 정수값을 입력 받아 array에 저장하고
pr_array() 라는 함수에서
pointer 를 써서 , 저장된 값을 출력(printf 사용) 한다
라는 과제를 내주셔서 풀엇는데 맞는지 확인좀 부탁드립니다 틀린점 있으면 알려주세요 ㅎㅎ
#include<stdio.h>
void pr_array(int*,int);
int main()
{
int i;
int a[10];
int array;
void (*pf)(int*)=NULL;
for(i=0;i<10;i++)
{
printf("정수값을 입력:");
scanf("%d",&a[i]);
}
pf = pr_array;
pf(&array,a);
printf("10개의 입력 받은 정수를 array의 저장한 값 : %d\n",array);
return 0;
}
void pr_array(int* z,int x[10])
{
*z=x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8]+x[9];
}
아그리고 이 코드에 대한설명좀 부탁드립니다 책찾아 보고 풀긴풀었는데
정수값 입력후에 입력한 10개의 숫자가 어째서 pr_array로 들어가는건지 잘모르겠습니다
특히 저기 빨간곳에 a만쓰는이유와 array에만 &쓰는이유
특히 빨간부분 자세히 부탁드립니다 위에꺼말고도
정말궁금합니다 좋은답변부탁드려요 내공만점
안녕하세요?
1. 위 코드에 대해 아래와 같이 수정을 하였습니다.
-. void* 까지 쓸 필요를 못느꼈습니다.
-. pr_array함수는 출력까지 담당해야 한다고 생각했습니다.
-. 주어진 문제는 a배열에 들어있는 값을 확인하는 것이지, 합계를 구하는게 아닙니다.
2. 아래
#include <stdio.h>
void pr_array(int* ptr_a, int count);
int main()
{
int i;
int a[10]; // 이 부분만 바꾸면, 입.출력 횟수를 마음대로 조절가능해 집니다.
int count;
// 배열의 요소 갯수를 구합니다.
// 이렇게하면, 위에서 배열 크기가 바뀌어도 함수는 바꿀 필요가 없어집니다.
// a배열전체크기 / 첫번째요소크기 (40byte / 4byte) -> 10개
// a는 int형 배열이고, int는 4byte입니다. 4바이트를 10개 선언했으므로 40바이트.
count = sizeof(a) / sizeof(a[0]);
// 입력 받은 값을 배열에 저장합니다.
for(i = 0; i < count; i++)
{
printf("정수값을 입력: ");
scanf("%d" , &a[i]); // 이때 입력받은 값이 각각 a배열에 저장됩니다.
}
// 함수에 배열, 배열크기를 전달하여 내용을 출력합니다.
pr_array(a, count);
return 0;
}
void pr_array(int* ptr_a, int count)
{
printf("\n");
printf("%d개의 입력 받은 정수를 array에 저장한 값 : ", count);
for(int loop = 0; loop < count; loop++)
{
printf("%d ", ptr_a[loop]); // 배열을 가르키는 포인터는 배열처럼 사용가능.
}
printf("\n\n");
}
3. 출력결과
4. count 부연 설명
-. pr_array(a, 10); 이렇게 호출을 할 수도 있습니다.
-. 그런데, 마음이 변하여 int a[10]; -> int a[3];으로 바꾸고 싶어졌습니다.
-. 이렇게 되면, 10으로 코딩했던 부분을 전부 변경해야 합니다.
-. 하지만, 위 처럼 코딩을 하면, 단지 배열의 숫자만 바꾸면 모든 것이 정상 작동합니다.
-. a[3]이면 3번 입력받고, 입력된 3개가 출력될 것이고,
-. a[6]이면 6번 입력받고, 입력된 6개가 출력될 것입니다.
도움이 되시길 바랍니다.
감사합니다.
written by
legend
C과외/C#과외/VB과외 프로그래밍 과외.서울인천경기-방문강의.기타전국-화상강의.제대로 체계적으로 배우고싶은분들.15년경력 프리랜서.삼성/포스코/한진 등.
서울,인천,경기,분당,일산,과천,산본,부천,부평,평촌,안산,안양,광명,용인,시흥,성남,수원,평택,오산,화성,동탄,천안,아산,
c#프로그래밍1:1과외, 15년 이상 프로젝트 경력의 프리랜서 직접 강의,
c#프로그래밍 과외, c#프로그래밍교육, IT·컴퓨터·컴퓨터과외비·프로그래밍과외, c# 강좌, c# 프로그래밍,
데이터베이스, 데이터베이스 프로그래밍, db, DB, 과외비,컴퓨터1:1,컴퓨터개인지도,컴퓨터실무과외,컴퓨터과외,컴퓨터1:1과외,
서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄
광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도
'좋은질문' 카테고리의 다른 글
C언어 답좀 부탁드려요 (0) | 2014.09.29 |
---|---|
VB 비주얼 베이직 질문 (0) | 2014.09.28 |
C# 속성(property)과 생성자에 관한 질문이에요. (0) | 2014.09.26 |
VB6 비주얼베이직 도와주세요 (0) | 2014.09.24 |
C# 잘못된 부분좀 지적 부탁드립니다. (0) | 2014.09.24 |