////
Search
🔤

C언어

파이썬 약타입 언어
C언어 강타입 언어
Array는 arr[0], arr[1], … 을 가리키는 포인터 변수로 저장

챕터 23 : 배열 2

문제

scanf에 주소를 주는 이유
scanf도 함수이기 때문에 주소값을 전달해 줘야 변수값을 참조하여 저장할 수 있다.
// 문제 : 고객에게 숫자를 10개 입력받아서 배열에 넣기 // 조건 : 변수를 2개만 사용해주세요. // 조건 : 포인터 문법을 쓸 수 없습니다. /* == 입력 == 1번째 숫자를 입력해주세요 : 1[엔터] 2번째 숫자를 입력해주세요 : 2[엔터] 3번째 숫자를 입력해주세요 : 3[엔터] 4번째 숫자를 입력해주세요 : 4[엔터] 5번째 숫자를 입력해주세요 : 5[엔터] 6번째 숫자를 입력해주세요 : 6[엔터] 7번째 숫자를 입력해주세요 : 7[엔터] 8번째 숫자를 입력해주세요 : 8[엔터] 9번째 숫자를 입력해주세요 : 9[엔터] 10번째 숫자를 입력해주세요 : 10[엔터] == 출력 == 1번째 입력받은 숫자 : 1 2번째 입력받은 숫자 : 2 3번째 입력받은 숫자 : 3 4번째 입력받은 숫자 : 4 5번째 입력받은 숫자 : 5 6번째 입력받은 숫자 : 6 7번째 입력받은 숫자 : 7 8번째 입력받은 숫자 : 8 9번째 입력받은 숫자 : 9 10번째 입력받은 숫자 : 10 */ #include <stdio.h> int main(void) { int arr[10]; for (int i=0; i<10; i++) { printf("%d 번째 숫자를 입력해주세요 : ",i + 1); scanf("%d", arr + i); } for (int i=0; i<10; i++) { printf("%d번째 입력받은 숫자 : %d\n",i + 1,arr[i]); } return 0; }
C
복사
// 문제 : 배열을 훼손하는 change 함수를 만들어주세요. #include <stdio.h> // 여기서 change 함수를 구현해주세요. // 아직 미완성된 상태입니다. 마저 구현해주세요. void change(int* p) { *p = 200; *(p + 1) = 400; } int main(void) { int x[2]; x[0] = 100; x[1] = 200; //int x[2] = {100, 200}; // 위 3 줄 코드의 같은 의미이다. printf("change 함수를 호출하기 전, x[0] : %d, x[1] : %d\n", x[0], x[1]); // 여기서 change 함수를 실행해주세요. change(x); printf("change 함수를 호출하기 전, x[0] : %d, x[1] : %d\n", x[0], x[1]); // 출력 => change 함수를 호출하기 전, x[0] : 200, x[1] : 400 return 0; }
C
복사
// 문제 : 배열을 훼손하는 change 함수를 만들어주세요.(배열의 포인터) #include <stdio.h> void change(int** p) { **p = 200; *(*p + 1) = 400; } int main(void) { int x[2] = {100, 200}; // x : 배열변수 // x의 값은 자동으로 x[0]의 주소값을 가진다. // x == &x[0] // x의 타입은 int* 이다. printf("change 함수를 호출하기 전, x[0] : %d, x[1] : %d\n", x[0], x[1]); int* p = x; change(&p); printf("change 함수를 호출하기 전, x[0] : %d, x[1] : %d\n", x[0], x[1]); // 출력 => change 함수를 호출하기 전, x[0] : 200, x[1] : 400 return 0; }
C
복사