
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제1
본 내용은
"
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제1
"
의 원문 자료에서 일부 인용된 것입니다.
2024.08.16
문서 내 토픽
-
1. 포인터 변수char 포인터 변수 s에 Kate배열의 첫번째 원소의 포인터값이 들어간다. printf를 이용하여 s의 첫번째 원소의 포인터값, s배열 자체의 포인터값을 출력한다. 그 뒤 printf함수를 반복사용하여 s의 첫번째 원소의 포인터값을 %s로 출력한다. (따라서 널문자까지 배열에 저장된 값을 다 출력하기 때문에 Kate가 출력됨) / 그 뒤 s[2]에 저장된 값을 %c로 출력한다. (따라서 문자 t가 출력됨)
-
2. char 배열char 배열 a에 "Kate"값을 대입한다. printf를 이용하여 a의 첫번째 원소의 포인터값, a배열 자체의 크기를 출력한다. 그 뒤 printf함수를 반복사용하여 a의 첫번째 원소의 포인터값을 %s로 출력한다. (따라서 널문자까지 배열에 저장된 값을 다 출력하기 때문에 Kate가 출력됨) / 그 뒤 a[2]에 저장된 값을 %c로 출력한다. (따라서 문자 t가 출력됨.)
-
3. 배열의 포인터 연산배열 a에 {10, 11, 12}를 대입하였다.printf("%p\n", a); : a배열의 첫번째 원소의 포인터값 -> 61FE14printf("%d\n", sizeof(a)); : a배열 전체가 점유하는 바이트 수 -> 12printf("%p\n", &a); : a배열 자체의 포인터값 -> 61FE14printf("%p\n", a+1); : a배열의 첫번째 원소의 포인터값에 1 더함 -> 더하는 단위가 4바이트이므로 61FE18printf("%p\n", &a[1]); : 1번 원소 배열 자체의 포인터값 -> 61FE18printf("%p\n", &a+1); : 배열 자체의 포인터값에 1 더함 -> 더하는 단위가 12바이트이므로 61FE20printf("%d\n", sizeof(a[0])); : a배열의 0번 원소 배열 자체가 점유하는 바이트 수 -> 4printf("%d\n", sizeof(&a)); : a배열 자체의 포인터값의 바이트 수 -> 8 printf("%d\n", sizeof(*a)); : 첫번째 원소의 포인터값에 indirect한 곳에 저장되어 있는 값의 바이트 수 -> 4printf("%d\n", sizeof(a) / sizeof(a[0])); : 12 % 4 = 3
-
4. 전역변수와 지역변수전역변수 g1을 1로 초기화한다. 또한 static 전역변수 s1도 3으로 초기화한다. foo함수에 대해 함수전방선언을 해준다.main함수에서 int형 변수 r, i를 선언 후 각각 0, 456으로 초기화하였다. / printf 함수를 이용하여 text메모리 영역에 저장된 foo함수의 메모리 주소값을 출력한다. / foo 함수에 매개변수 5를 대입하고 실행시킨다. (foo함수에 대한 함수전방선언을 했기 때문에 가능) foo함수에서 매개변수 n이 5로 초기화된다. / 함수 안에서만 사용 가능한 count 변수를 선언 후 0으로 초기화한다. / int형 지역변수 i를 선언한다. / func.c의 f1함수에 매개변수 n을 대입하고 실행시킨다.
-
5. 함수 호출과 리턴f1함수에서 매개변수 n이 5로 초기화된다. / printf함수를 이용하여 f1 함수의 함수의 이름, 파일 이름, text메모리 영역에 저장된 f1함수의 메모리 주소값을 출력한다. / 전역변수 g1값은 1이므로 매개변수 n 값이 리턴된다. (n == 5)리턴된 값은 count 변수에 더해져서 count변수는 5가 된다. / int형 지역변수 i에 123을 대입한다. / printf 함수를 이용하여 foo함수에서의 지역변수 i값을 출력한다. / count값을 리턴한다.리턴된 값은 main함수의 지역변수 r에 저장된다. (r == 5) / printf함수로 ----를 출력한다.main.c의 f1 함수에 6을 매개변수로 대입하고 실행시킨다. (main.c의 f1 함수와 func.c의 f1 함수는 둘 다 static 함수이므로 다른 함수이다.)printf함수를 이용하여 f1 함수의 함수의 이름, 파일 이름, text메모리 영역에 저장된 f1함수의 메모리 주소값을 출력한다. / 전역변수 g1값은 1이므로 1을 리턴한다.printf함수를 이용하여 r, f1(6)의 리턴값, i를 출력한다.
-
6. 함수 호출과 매개변수calc_max 함수int형 변수 angle, degree를 매개변수로 가지며 int형으로 값을 리턴하는 함수angle과 degree 값을 더한다. / 더한 값이 90을 초과하면 90 – angle값을 리턴한다. / 더한 값이 -90 미만이면 -90 – angle값을 리턴한다.두 경우에 해당하지 않는 경우 (더한값이 -90 이상, 90 이하) degree값을 리턴한다.2) rotate 함수int 변수 angle, degree를 매개변수로 가지며 int형으로 값을 리턴하는 함수calc_max함수에 angle, degree에 저장된 값을 보내서 함수를 실행시키고, 리턴받은 값을 새로 선언한 int형 변수 oper_degree에 대입한다. 그 후 angle + oper_degree 값을 angle에 저장한다. 마지막으로 angle값을 리턴한다.
-
7. 이차원 배열[2][3] 크기의 int형 이차원배열 a를 선언 후 {11, 12, 13}, {14, 15, 16}을 대입하였다.printf("%p\n", a); : 배열의 첫번째 원소의 포인터값 출력 -> 61FE00printf("%p\n", a[0]); : a[0]배열의 첫번째 원소의 포인터값 출력 -> 61FE00printf("%p\n", &a); : a배열 자체의 포인터값 출력 -> 61FE00printf("%p\n", a+1); : a배열의 첫번째 원소의 포인터값에 1 더함 -> 단위가 12바이트이므로 61FE00에서 12바이트 증가한 61FE0C가 출력된다.printf("%p\n", a[0]+1); : a[0]배열의 첫번째 원소의 포인터값에 1 더함 -> 단위가 4바이트이므로 61FE00에서 4바이트 증가한 61FE04이 출력된다. printf("%d\n", sizeof(a)); : a배열 전체가 점유하는 바이트 수 출력 -> 12 x 2 = 24printf("%d\n", sizeof(a[0])); : a[0]배열 전체가 점유하는 바이트 수 출력 -> 4 x 3 = 12printf("%d\n", sizeof(a[0][0])); : a[0][0] 전체가 점유하는 바이트 수 출력 -> 4
-
1. 주제2: char 배열char 배열은 C 프로그래밍에서 문자열을 표현하는 가장 기본적인 방법입니다. char 배열은 문자들을 연속적으로 저장할 수 있으며, 문자열 처리를 위한 다양한 함수들을 제공합니다. 문자열 입출력, 문자열 비교, 문자열 조작 등 다양한 작업을 char 배열을 통해 수행할 수 있습니다. 또한 char 배열은 포인터와 함께 사용되어 동적 메모리 할당 및 문자열 처리에 활용됩니다. char 배열은 C 프로그래밍에서 매우 중요한 개념이며, 이를 잘 이해하고 활용하는 것이 필수적입니다.
-
2. 주제4: 전역변수와 지역변수전역변수와 지역변수는 C 프로그래밍에서 변수의 범위와 생존 기간을 결정하는 중요한 개념입니다. 전역변수는 프로그램 전체에서 접근할 수 있는 반면, 지역변수는 특정 범위 내에서만 접근할 수 있습니다. 전역변수는 프로그램 전체에서 공유되어 편리하지만, 잘못 사용하면 예기치 않은 부작용이 발생할 수 있습니다. 지역변수는 변수의 범위를 명확히 제한하여 코드의 가독성과 유지보수성을 높일 수 있습니다. 전역변수와 지역변수의 적절한 사용은 C 프로그래밍에서 매우 중요하며, 이를 잘 이해하고 활용하는 것이 필수적입니다.
-
3. 주제6: 함수 호출과 매개변수함수 호출과 매개변수는 C 프로그래밍에서 매우 중요한 개념입니다. 함수 호출을 통해 코드를 모듈화하고 재사용성을 높일 수 있으며, 매개변수를 통해 함수에 필요한 데이터를 전달할 수 있습니다. 이를 통해 복잡한 문제를 작은 단위로 나누어 해결할 수 있습니다. 함수 호출과 매개변수를 잘 이해하고 활용하면 코드의 가독성, 유지보수성, 확장성이 크게 향상됩니다. 하지만 함수 호출과 매개변수를 잘못 사용하면 스택 오버플로, 메모리 누수 등의 문제가 발생할 수 있으므로 주의해야 합니다. 함수 호출과 매개변수에 대한 깊이 있는 이해는 C 프로그래밍 실력을 높이는 데 필수적입니다.