본문 바로가기

분류 전체보기140

포인터 연습 예제3 (참조에 의한 호출, call-by-reference)(함수에서 2개 이상의 값 동시 반환) 함수 호출시 매개 변수를 통하여 외부로부터 데이터를 받는 방법은 크게 나누어서 두 가지가 있다.- 값에 의한 호출(call-by-value): 복사본이 전달된다.-참조에 의한 호출(call-by-reference): 원본이 전달된다.C에서는 값에 의한 호출만을 지원하지만, 포인터를 이용하여서 참조에 의한 호출을 간접 구현 가능하다.다음 기본 예시인 swap()함수를 사용해서 설명해보자. #include void swap(int x, int y);int main(){ int a = 100, b = 200; printf("a=%d b=%d\n", a, b); swap(a, b); //swap 함수 x와y에 각각 a와b값만을 복사하여 전달한다. printf("a=%d b=%d\n", a, b); return .. 2024. 6. 4.
포인터 연습 예제2 포인터 연산은 헷갈리기 쉬우므로 다음 예제를 통해 한번에 확실하게 구분해보자.#include int main(void){ int i = 10; int* pi = &i; printf("i=%d, pi=%p\n", i, pi); (*pi)++; // pi가 가리키는 대상(i 값)을 증가 printf("i=%d, pi=%p\n", i, pi); *pi++; // pi(주소)를 증가 (pi를 다음 int 위치로 이동) printf("i=%d, pi=%p\n", i, pi); *++pi; // pi를 증가시키고 (다음 int 위치로 이동), 그 위치의 값을 참조 (하지만 아무 연산도 수행하지 않음) printf("i=%d, pi=%p\n", i, pi); ++*pi; // pi가 가리키는 대상의 .. 2024. 6. 4.
포인터 연습 예제1 #include int main(void){ int i = 10; int* pi = &i; printf("i = %d, pi = %p\n", i, pi); (*pi)++; printf("i = %d, pi = %p\n", i, pi); printf("i = %d, pi = %p\n", i, pi); *pi++; printf("i = %d, pi = %p\n", i, pi); return 0;}포인터 연산 정리 위 예제에서는 (*pi)++ 가 사용되었으므로 pi가 가리키고 있는 주소인 i의 값인 10에 1을 더한다.따라서 두번쨰 printf에서는 11로 값이 출력된다.*pi++에서는 가리키는 주소를 찾아 주소를 1 증가 시킨다. 3-4번째 출력을 비교해보면 확인할 수 있다. #include void Cou.. 2024. 6. 3.
문자열 배열 연습 4 이차원 배열을 이용한 프로그램 작성 연습#include int main(void){ int i, j, n = 0; int a[4][4], b[4][4]; for (i = 0;i A배열을 왼쪽으로 90도 회전한것이 B배열이다.함수 정의 없이 만들었다.다음은 사용자 정의 함수 matrix를 정의하여 똑같은 출력을 갖도록 하였다.#include void matrix(int array[][4], int rowsize);int main(void){ int i, j, n = 0; int a[4][4], b[4][4]; for (i = 0;i 알다시피 사용자 정의 함수를 정의하여 사용하면 앞으로 활용에 있어서 행렬이 2개,3개 더 추가되더라도 쉽게 처리할수있다. 2024. 5. 29.
문자열 배열 연습 3 #define _CRT_SECURE_NO_WARNINGS#include int main(){ int i, max = 0; int index=0; int array[10]; int freq[10] = { 0 }; printf("0에서 9까지의 정수를 입력하시오: "); for (i = 0;i max) { max = freq[i]; index = i; } } printf("0~9중 가장 많이 나온수는 %d이고 %d번 나왔습니다.", index, max); return 0;}위 코드를 배열을 인수로 사용하는 함수를 정의하여 만들어보았다.#define _CRT_SECURE_NO_WARNINGS#include void frqtest(int[], int n);int main(void) { int i, x.. 2024. 5. 29.
문자열 배열 연습2 #define _CRT_SECURE_NO_WARNINGS#include int main(void){ int age; // 문자열 입력 처리 char inputs[30]; printf("당신의 나이는?\n"); scanf("%d",&age); printf("당신의 이름은?\n"); scanf("%s", inputs); //1.공백없이 입력! 2. &기호 사용하지 않음! printf("입력하신 당신의 이름은 %s입니다.\n",inputs ); printf("입력하신 당신의 나이는 %d입니다.\n",age ); return 0;}이름을 입력할때, 홍 길동 이렇게 띄워서 입력하게되면 '홍'만 입력받게되어 출력할때 정말'홍'만 출력되는것을 볼 수 있다. 따라서 문자열을 배열에 입력할 때에는 적절한 함수 사용을 통.. 2024. 5. 28.