본문 바로가기

IT/C언어

(15)
C언어본색 연습문제 Part 2.4.6 1. 문제 다음 프로그램의 에러 발생 원인이 무엇인지를 분석하세요. 2. 결과오류. 3. 코드 #include int main(){char* array1 = "ABCD";char array2[] = "ABCD"; array1[0]='X';array2[0]='X'; return 0; } 4. 설명 array2의 값은 배열이기 때문에, 문자열변수로 취급되어 수정이 가능하지만,char* array1은 ABCD를 문자열 상수로 취급하기 때문에, 이 값을 수정하려고 한다면 오류가 발생한다.결과적으로 컴파일에러..
C언어본색 연습문제 Part2.4.5 1. 문제 -다음 코드를 이용하여 실행 결과와 같은 형태로 출력하는 프로그램을 작성하세요. 2. 결과I Love C World 3. 코드 int main(){char *string[2] = { "I Love C", "Hello World" }; printf("%s %s \n", string[0], string[1] + 6);} 4. 설명 포인터 배열을 이용해서, 해당 값은 상수이기 때문에, 변경은 불가능하지만 중간부터 끝까지 출력하는 것은 가능하다. 문자열 %s는 해당 값부터 연속적인 주소 >> \0 널문자가 나올떄까지 이어지기 떄문,그래서 Hello World의 6번째부터 시작하면, Hello가 잘려서 원하는 결과를 출력할 수 있다.
C언어본색 연습문제 Part2.4.4 1. 문제 다음과 같이 배열 포인터 변수의 결과가 출력되었습니다. 결과를 보고 코드의 (//) 부분을 완성하세요. 2. 결과 3. 코드 12345678910111213int main(){ int array[2][3] = { 10,20,30,40,50,60 }; int (*p)[3] = NULL; // 배열 포인터. - 배열을 가리키는 포인터. p = array; printf("%d %d %d \n", p[0][0], p[0][1], p[0][2]); printf("%d %d %d \n", p[1][0], p[1][1], p[1][2]); return 0; }Colored by Color Scriptercs 4. 설명 int (*p)[열] = NULL; 이 우리가 알고 있는 배열포인터의 선언방법이다.arr..
C언어본색 연습문제 Part 2.4.2 1. 문제 다음과 같이 실행결과가 출력되었습니다. 결과를 보고 코드의 (//) 부분을 완성하세요. 2. 결과 3. 코드 12345678910111213int main(){ int array[5] = { 10,20,30,40,50 }; int* p = NULL; p = array; printf("%d %d %d %d %d \n", p[0], p[1], p[2], p[3], p[4]); printf("%d %d %d %d %d \n", *(p + 0), *(p + 1), *(p + 2), *(p + 3), *(p + 4)); return 0; } Colored by Color Scriptercs 4. 설명 int형의 주소를 가지는 int* p 를 선언하고,p = array, array의 시작주소를 포인터로 ..
프로그래밍 연습문제 Part 2.4.1 1. 문제 정수형 배열에 10, 30, 40, 30, 20을 저장하고 포인터 변수로 배열에 접근하여 배열의 합을 구하세요. 2. 결과 3. 코드 123456789101112131415int main(){ int array[5] = { 10,30,40,30,20 }; int *p = NULL; int i,sum = 0; p = array; for (i = 0; i
C언어본색 연습문제 Part 2.3.5 1. 문제 다음 그림을 보고 1단계에서 2단계까지를 나타내는 프로그램을 작성하세요. 2. 결과 3. 코드 123456789101112131415161718192021#include int main(){ int array[3] = { 10,20,30 }; int *ip = NULL; int **ipp = NULL; printf("%d %d %d \n", array[0], array[1], array[2]); ip = &array; ipp = &ip; printf("------------\n"); printf("%d %d %d \n", array[0], array[1], array[2]); printf("%d %d %d \n", ip[0], ip[1], ip[2]); printf("%d %d %d \n", ..
C언어본색 연습문제 Part2.3.4 1. 문제 다음 그림을 보고 1단계에서 4단계까지를 나타내는 프로그램을 작성하세요. 단, 2단계에서는 ip1을 이용하여 num1의 값에 접근, 3단계에서는 ip2를 이용하여 num1의 값에 접근, 4단계에서는 ip3를 이용해서 num1의 값에 접근하는 코드를 작성하세요. 2. 결과 3. 코드123456789101112131415161718192021222324252627282930#include int main(){ int num1 = 10; int* ip1 = NULL; int** ip2 = NULL; int *** ip3 = NULL; ip1 = &num1; ip2 = &ip1; ip3 = &ip2; printf("%d \n", num1); *ip1 = 20; // *&num1 printf("%d \..
C언어본색 연습문제 Part 2.3.3 1. 문제 다음 그림을 보고 1단계에서 2단계까지를 나타내는 프로그램을 작성하시오. 2. 결과 3. 코드 123456789101112131415161718#include int main(){ int num1 = 10; int* ip1 = NULL; int** ip2 = NULL; int *** ip3 = NULL; ip1 = &num1; ip2 = &ip1; ip3 = &ip2; printf("%d %d %d %d \n", num1, *ip1, **ip2, ***ip3); return 0; }Colored by Color Scriptercs 4. 설명이 문제는 다차원포인터를 이해했는지 확인하는 문제입니다. num1에는 10의 값이 들어가있고, 그 이후 포인터가 참조, 그 포인터를 이중포인터가 참조.. 이..