4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Similar documents
학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

슬라이드 1

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint 프레젠테이션

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap11-포인터의활용.pptx

untitled

11장 포인터

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint 프레젠테이션

고등학교 수학 요약노트 - 확률과 통계

금오공대 컴퓨터공학전공 강의자료

untitled

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - chap03-변수와데이터형.pptx

1 1,.,

untitled

Microsoft PowerPoint - chap10-함수의활용.pptx

KAA2005.9/10 Ãâ·Â

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터(강의)

수리 영역 가 형 5. 다음 그림과 같이 크기가 같은 정육면체 개가 한 모서리씩을 공유하 면서 각 면이 평행 또는 수직 관계를 유지한 채로 한 평면 위에 놓여있 다. 그림의 세 꼭짓점 A, B, C에 대한 두 벡터 BA 와 BC 가 이루는 각 의 크기를 h라 할 때,

ch15

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

*세지6문제(306~316)OK

PART

£01¦4Àå-2

Part Part

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

금오공대 컴퓨터공학전공 강의자료

<BACFC7D1B3F3BEF7B5BFC7E22D3133B1C733C8A BFEB2E687770>


1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning


목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

±¹¹ÎÀºÇà-¸ñÂ÷Ãâ·Â¿Ï¼º

8장. 포인터

13 주차문자열의표현과입출력

02장.배열과 클래스

PowerPoint 프레젠테이션

설계란 무엇인가?

11장 포인터

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

11장 포인터

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - chap06-2pointer.ppt

C 프로그래밊 개요

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

K&R2 Reference Manual 번역본

PowerPoint Presentation

<C5F0B0E82D313132C8A328C0DBBEF7BFEB292E687770>

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - chap06-1Array.ppt

untitled

Microsoft PowerPoint - 제9강 문자열

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - 09_C_Language_Pointer_Advanced

untitled

chap8.PDF

, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

, _ = A _ A _ 0.H =. 00=. -> 0=. 0= =: 0 :=;^!;.0H =.0 000=0. -> 00= 0. 00= =: 0 0 :=;()$; P. 0, 0,, 00, 00, 0, 0, 0, 0 P. 0.HH= = 0.H =0. 0=. -> =0.

chap10.PDF

Microsoft PowerPoint - chap-11.pptx

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

확률과통계.indd

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

C 프로그래밊 개요

Microsoft PowerPoint - [2009] 02.pptx

OCW_C언어 기초

ABC 6장

Microsoft PowerPoint - Chapter14_17.pptx

Microsoft PowerPoint - Lesson14.pptx

Microsoft PowerPoint - Lesson14.pptx

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

歯7장.PDF

윤성우의 열혈 TCP/IP 소켓 프로그래밍

특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

歯

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

슬라이드 1

i n i n i n 1

PowerPoint Template

Unknown

Microsoft PowerPoint - 제3장-배열.pptx

낙랑군

Microsoft PowerPoint - Chapter_08.pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할


BMP 파일 처리

Transcription:

- Part2-4

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

4.1 포인터와 1 차원배열

4.1 1 (1/16)- - - [4-1.c ] #include <stdio.h> int main(void) { int array[3]={10, 20, 30}; } prind("%x %x %x \n", array, array+0, &array[0]); prind( %x %x \n", array+1, &array[1]); prind( %x %x \n", array+2, &array[2]); prind("%d %d %d \n", sizeof(array), sizeof(array+0), sizeof(&array[0])); return 0; array == array+0 ==&array[0] array+1 ==&array[1] array+2 ==&array[2] 10 20 30 array[0] array[1] array[2]

4.1 1 (2/16)- - - [4-1.c ] prind("%d %d %d \n", sizeof(array), sizeof(array+0), sizeof(&array[0]) ); array 10 20 30 4 4 4 array+0 10 4 sizeof(array+0) 4 sizeof(array) 12

4.1 1 (3/16)- - - [4-4.c ] 1 ü #include <stdio.h> int main(void) { int array[3]={10, 20, 30}; int* p=null; } p=array; // p=&array[0]; prind("%x %x %x \n", p, p+0, &p[0]); prind("%x %x \n", p+1, &p[1]); prind("%x %x \n", p+2, &p[2]); return 0;

4.1 포인터와 1차원 배열 (4/16)- - - [4-4.c 분석]

4.1 1 (5/16)- - - [4-5.c ] 1 ü * #include <stdio.h> int main(void) { int array[3]={10, 20, 30}; int* p=null; p=array; // p=&array[0]; } // * prind("%d %d %d \n", *p, *(p+0), *&p[0]); // *& prind("%d %d \n", *(p+1), *&p[1]); // *& prind("%d %d \n", *(p+2), *&p[2]); // *& return 0;

4.1 포인터와 1차원 배열 (6/16)- - - [4-5.c 분석]

4.1 1 (7/16)- - - [4-6.c ] #include <stdio.h> int main(void) { int array[3]={10, 20, 30}; int i=0; int* p=null; p=array; // p=&array[0]; for(i=0; i<3; i++) prind("%d %d %d \n", *(p+i), *&p[i], p[i] ); << 1>> *(p+i) == *&p[i] == p[i] prind("- - - - - - - - - - - - - - - - - - - - \n"); << 2>> *(array+i)==*&array[i]==array[i] for(i=0; i<3; i++) prind("%d %d %d \n", *(array+i), *&array[i], array[i]); } return 0;

4.1 1 (8/16)- - - [4-6.c ] array p << 1>> *(p+i) == *&p[i] == p[i] p == &p[0] p+1 == &p[1] p+2 == &p[2] 10 20 30 *(p+0)==*&p[0]==p[0] *(p+1)==*&p[1]==p[1] *(p+2)==*&p[2]==p[2] array p << 2>> *(array+i)==*&array[i]==array[i] array == &array[0] array+1 == &array[1] array+2 == &array[2] 10 20 30 *(array+0)==*&array[0]==array[0] *(array+1)==*&array[1]==array[1] *(array+2)==*&array[2]==array[2]

4.1 1 (9/16)- - - [4-7.c ] ü - 4, - #include <stdio.h> int main(void) { int array[3]={10, 20, 30}; int* p=null; p=array; // prind("%d %d %d \n", array[0], array[1], array[2]); prind("%d %d %d \n", *(array+0), *(array+1), *(array+2)); prind("%d %d %d \n", p[0], p[1], p[2]); prind("%d %d %d \n", *(p+0), *(p+1), *(p+2)); } prind(" : %d : %d \n", sizeof(array), sizeof(p)); return 0; 12 4

4.1 1 (10/16)- - - [4-8.c ] int array[3]={10, 20, 30}; int* p=null; 7 11 15 p=array; // p=&array[0]; prind("%d %d %d \n", p[0], p[1], p[2]); prind("%d %d %d \n", *p, *(p+1), *(p+2)); p=array+1; // p=&array[1]; prind("%d %d %d \n", p[- 1], p[0], p[1]); prind("%d %d %d \n", *(p- 1), *p, *(p+1)); p=array+2; // p=&array[2]; prind("%d %d %d \n", p[- 2], p[- 1], p[0]); prind("%d %d %d \n", *(p- 2), *(p- 1), *p);

4.1 1 (11/16)- - - [4-8.c ]

4.1 1 (12/16)- - - [4-9.c ] int array[3]={10, 20, 30}; int* p=null; p=array; // p=&array[0]; prind("%d %d %d \n", p[0], p[1], p[2]); prind("%d %d %d \n", *p, *(p+1), *(p+2)); prind("- - - - - - - - - - - - - - \n"); p=p+1; // p=&array[1]; prind("%d %d %d \n", p[- 1], p[0], p[1]); prind("%d %d %d \n", *(p- 1), *p, *(p+1)); prind("- - - - - - - - - - - - - - \n"); p=p+1; // p=&array[2]; prind("%d %d %d \n", p[- 2], p[- 1], p[0]); prind("%d %d %d \n", *(p- 2), *(p- 1), *p); 0) prind("- - - - - - - - - - - - - - \n"); return 0;

7 9 13 17 4.1 1 (13/16)- - - [4-10.c ] int array[3]; int* p=null; p=array; *p = 10; prind("%d %d %d \n", p[0], p[1], p[2]); prind("- - - - - - - - - - - - - - \n"); *(p+1)=20; prind("%d %d %d \n", p[0], p[1], p[2]); prind("- - - - - - - - - - - - - - \n"); *(p+2)=30; prind("%d %d %d \n", p[0], p[1], p[2]); prind("- - - - - - - - - - - - - - \n"); prind("%d %d %d \n", *p, *(p+1), *(p+2)); prind("%d %d %d \n", p[0], p[1], p[2]); prind("- - - - - - - - - - - - - - \n");

4.1 1 (14/16)- - - [4-10.c ] array P array P array P array 10?? p[0] P[1] P[2] array 10 20? p[0] P[1] P[2] array 10 20 30 p[0] P[1] P[2] 7,9 13 17 *p == *(p+0) == p[0] *array == *(array+0) == array[0] *(p+1) == p[1] *(array+1) == array[1] *(p+2) == p[2] *(array+2) == array[2]

7 8 12 13 17 18 4.1 1 (15/16)- - - [4-11.c ] int array[3]; int* p=null; p=array; *p=10; prind("%d %d %d \n", p[0], p[1], p[2]); prind("- - - - - - - - - - - - - - \n"); p=p+1; *p=20; // p[0]=20; prind("%d %d %d \n", p[- 1], p[0], p[1]); prind("- - - - - - - - - - - - - - \n"); p=p+1; *p=30; // p[0]=30; prind("%d %d %d \n", p[- 2], p[- 1], p[0]); prind("- - - - - - - - - - - - - - \n"); prind("%d %d %d \n", p[- 2], p[- 1], p[0]); prind("%d %d %d \n", *(p- 2), *(p- 1), *p);

4.1 1 (16/16)- - - [4-11.c ] array array 10?? P p[0] P[1] P[2] array+1 array+1 10 20? P P[- 1] P[0] P[1] array+2 array+2 10 20 30 P p[- 2] P[- 1] P[0] 7,8 12, 13 17, 18 *p == *(p+0) == p[0] *array == *(array+0) == array[0] *p == *(p+0) == p[0] *(array+1) == array[1] *p == *(p+0) == p[0] *(array+2) == array[2]

4.2 포인터와 2 차원배열

4.2 포인터와 2차원 배열 (1/17) 2차원 배열에서 array[i] == *(array+i)는 주소이다. ü 복습(PART2 2장) l 1차원 배열 : *(array+i) == array[i] == *&array[i]는 값 l 2차원 배열 : *(array+i) == array[i] == *&array[i]는 주소

4.2 2 (2/17)- - - [4-12.c ] #include <stdio.h> int main(void) { int array[3][3]={10,20,30,40,50,60,70,80,90}; prind("%x %x %x \n", &array[0][0], &array[0][1], &array[0][2]); // prind("%x %x %x \n", &array[1][0], &array[1][1], &array[1][2]); // prind("%x %x %x \n", &array[2][0], &array[2][1], &array[2][2]); // prind("- - - - - - - - - - - - - - - \n"); prind("%d %d %d \n", *&array[0][0], *&array[0][1], *&array[0][2]); // prind("%d %d %d \n", *&array[1][0], *&array[1][1], *&array[1][2]); // prind("%d %d %d \n", *&array[2][0], *&array[2][1], *&array[2][2]); // prind("- - - - - - - - - - - - - - - \n"); prind("%d %d %d \n", array[0][0], array[0][1], array[0][2]); // *& prind("%d %d %d \n", array[1][0], array[1][1], array[1][2]); // *& prind("%d %d %d \n", array[2][0], array[2][1], array[2][2]); // *& return 0; }

4.2 포인터와 2차원 배열 (3/17)- - - [4-12.c 분석]

4.2 2 (4/17)- - - [4-13.c ] int array[2][3] = {10,20,30,40,50,60}; prind("- - - - - - - - - - - - - - - - - - #1- - - - - - - - - - - - - - - - - - - - \n"); prind("%x %x %x \n", &array[0][0], &array[0][1], &array[0][2]); prind("%x %x %x \n", &array[1][0], &array[1][1], &array[1][2]); prind("- - - - - - - - - - - - - - - - - - #2- - - - - - - - - - - - - - - - - - - - \n"); prind("%x %x \n", array, array+1); prind("%x %x \n", array[0], array[1]); prind("%x %x \n", *(array+0), *(array+1)); PART2-2 ( ) array[i] == *(array+i) prind("- - - - - - - - - - - - - - - - - - - #3- - - - - - - - - - - - - - - - - - - - \n"); prind("%d %d %d \n", *(array[0]+0),*(array[0]+1),*(array[0]+2)); prind("%d %d %d \n", *(array[1]+0),*(array[1]+1),*(array[1]+2)); prind("- - - - - - - - - - - - - - - - - - - #4- - - - - - - - - - - - - - - - - - - - \n"); prind("%d %d %d \n", *(*(array+0)+0), *(*(array+0)+1), *(*(array+0)+2)); prind("%d %d %d \n", *(*(array+1)+0), *(*(array+1)+1), *(*(array+1)+2));

4.2 2 (5/17)- - - [4-13.c ] &array[0][1] == array[0]+1 int array[2][3]; &array[0][0] == array[0]+0 &array[0][2] == array[0]+2 &array[1][0] == array[1]+0 &array[1][1] == array[1]+1 &array[1][2] == array[1]+2 *&array[0][1] == *( array[0]+1 ) int array[2][3]; *&array[0][0] == *( array[0]+0 ) *&array[0][2] == *( array[0]+2 ) *&array[1][0] == *( array[1]+0 ) *&array[1][1] == *( array[1]+1 ) *&array[1][2] == *( array[1]+2 )

4.2 2 (6/17)- - - [4-13.c ] &array[0][1] == *(array+0)+1 int array[2][3]; &array[0][0] == *(array+0)+0 &array[0][2] == *(array+0)+2 &array[1][0] == *(array+1)+0 &array[1][1] == *(array+1)+1 &array[1][2] == *(array+1)+2 *&array[0][1] == *( *(array+0)+1 ) int array[2][3]; *&array[0][0] == *( *(array+0)+0 ) *&array[0][2] == *( *(array+0)+2 ) *&array[1][0] == *( *(array+1)+0 ) *&array[1][2] == *( *(array+1)+2 ) *&array[1][1] == *( *(array+1)+1 )

4.2 포인터와 2차원 배열 (7/17)- - - [4-13.c 분석] 2차원 배열의 물리적 메모리 구조

4.2 2 (8/17)- - - [4-14.c ] 2 ü 2 #include <stdio.h> int main(void) { int array[2][3]={10,20,30,40,50,60}; int* p=null; } p=array; // p=&array[0][0]; // p=array[0]; // prind("- - - - - - - - - - - - \n"); prind("%x %x %x \n", &p[0], &p[1], &p[2]); prind("%x %x %x \n", &p[3], &p[4], &p[5]); prind("- - - - - - - - - - - - \n"); prind("%d %d %d \n", p[0], p[1], p[2]); // prind("%d %d %d \n", *(p+0), *(p+1), *(p+2)); prind("%d %d %d \n", p[3], p[4], p[5]); // prind("%d %d %d \n", *(p+3), *(p+4), *(p+5)); return 0;

4.2 2 (9/17)- - - [4-14.c 1] int array[2][3]={10,20,30,40,50,60}; int* p=null; p=array; array P array == &array[0][0] == array[0] array+1== &array[1][0] == array[1]

4.2 2 (10/17)- - - [4-14.c 2] int array[2][3]={10,20,30,40,50,60}; int* p=null; p=array; 1 p array p p == &p[0] p+3 == &p[3] p+1 == &p[1] p+2 == &p[2] p+5 == &p[5] p+4 == &p[4]

4.2 2 (11/17)- - - [4-14.c 3] int array[2][3]={10,20,30,40,50,60}; int* p=null p=array; 1 p array P *(p+1) == *&p[1] == p[1] *p == *&p[0] == p[0] *(p+3) == *&p[3] == p[3] *(p+2) == *&p[2] == p[2] *(p+5) == *&p[5] == p[5] *(p+4) == *&p[4] == p[4]

4.2 2 (12/17)- - - [4-15.c ] #include <stdio.h> int main(void) { int array[2][3]={10,20,30,40,50,60}; int* p=null; // int** p; p=array; // 1 2 } prind("%d %d %d \n", p[0][0], p[0][1], p[0][2]); // prind("%d %d %d \n", p[1][0], p[1][1], p[1][2]); // return 0; 1 p 2 array[2][3] 1. p[0], p[1], p[2], p[3], p[4], p[5], p[6]

4.2 2 (13/17)- - - [4-15.c ] #include <stdio.h> int main(void) { int array[2][3]={10,20,30,40,50,60}; int** p=null; p=array; // 2 2 } prind("%d %d %d \n", p[0][0], p[0][1], p[0][2]); // prind("%d %d %d \n", p[1][0], p[1][1], p[1][2]); // return 0; 2 p 1.

4.2 2 (14/17) ü ( ) l : l : * l :

4.2 2 (15/17) 2 ü int array1[2][3]; int (*p1)[3]=null; // p1 double array2[2][4]; double (*p2)[4]=null; // p2 p1=array1; // p1 3 2 array1 p2=array2; // p2 4 2 array2 return 0;

4.2 2 (16/17)- - - [4-16.c ] #include <stdio.h> int main(void) { int array[2][3]={10,20,30,40,50,60}; int (*p)[3]=null; // p p=array; // } prind("%d %d %d \n", p[0][0], p[0][1], p[0][2]); prind("%d %d %d \n", p[1][0], p[1][1], p[1][2]); return 0;

ü 4-17.c ü 4-18.c 4.2 2 (17/17)

4.3 포인터배열

4.3 (1/8) ü l :, * l : l :

4.3 (2/8) int a=1, b=2, c=3; int* pointer[3]={null, NULL, NULL}; // pointer[0]=&a; pointer[1]=&b; pointer[2]=&c; return 0; ü

#include <stdio.h> int main(void) { int a=10, b=20, c=30; int* ap=null; int* bp=null; int* cp=null; 4.3 (3/8)- - - [4-19.c ] ap=&a; bp=&b; cp=&c;. prind("%d %d %d \n", a, b, c); prind("%d %d %d \n", *ap, *bp, *cp); } prind("%x %x %x \n", &a, &b, &c); prind("%x %x %x \n", ap, bp, cp); prind("%x %x %x \n", &ap, &bp, &cp); return 0;

4.3 (4/8)- - - [4-20.c ] #include <stdio.h> int main(void) { int a=10, b=20, c=30; int* ap[3]={null, NULL, NULL}; // ap[0]=&a; ap[1]=&b; ap[2]=&c;. } prind("%x %x %x \n", &a, &b, &c); prind("%x %x %x \n", ap[0], ap[1], ap[2]); prind("%x %x %x \n", *(ap+0), *(ap+1), *(ap+2)); prind("- - - - - - - - - - - - - - \n"); prind("%d %d %d \n", *&a, *&b, *&c); prind("%d %d %d \n", *ap[0], *ap[1], *ap[2] ); prind("%d %d %d \n", **(ap+0), **(ap+1), **(ap+2) ); return 0; ap[i] == *(ap+i)

4.3 (5/8)- - - [4-20.c ] int a=10, b=20, c=30; int* ap[3]={null, NULL, NULL}; ap[0]=&a; ap[1]=&b; ap[2]=&c;

4.3 (6/8)- - - [4-20.c ] &ap[0] &ap[1] &ap[2] &c &a &b &c 30 ap[0] ap[1] ap[2] c int a=10, b=20, c=30; int* ap[3]={null, NULL, NULL}; ap[0]=&a; ap[1]=&b; ap[2]=&c; &b 20 b &a 10 a

4.3 (7/8) ü 3 2 int (*p)[3]=null; ü, int* p[3]={null, NULL, NULL};

4.3 (8/8)- - - [4-21.c ] int a=10, b=20, c=30; int* ap[3]; // int array[2][3]={10,20,30,40,50,60}; int (*p)[3]; // ap[0]=&a; ap[1]=&b; ap[2]=&c; p=array;

4.4 포인터와문자그리고포인터와문자열

4.4 (1/21) ü l ( ) l, l ü l l ü l

4.4 (2/21)- - - [4-22.c ] char array[ ]={'A', 'B', 'C', 'D'}; // // prind(" : %c %c %c %c \n", 'A', 'B', 'C', 'D'); // prind(" : %c %c %c %c \n", array[0], array[1], array[2], array[3]); array[0]='d'; array[1]='c'; array[2]='b'; array[3]='a ; prind(" : %c %c %c %c \n", array[0], array[1], array[2], array[3]); prind(" array : %d \n", sizeof(array) ); // 4

4.4 (3/21)- - - [4-23.c ] #include <stdio.h> int main(void) { char array1[ ]={'A', 'B', 'C', 'D'}; char* p=null; p=array1; prind("%c %c %c %c \n", p[0], p[1], p[2], p[3]); prind("%d %d %d %d \n", p[0], p[1], p[2], p[3]); prind("%c %c %c %c \n", *(p+0), *(p+1), *(p+2), *(p+3) ); prind("%d %d %d %d \n", *(p+0), *(p+1), *(p+2), *(p+3) ); } return 0;

4.4 (4/21) (Null) ü l ( ) l (Null), (\0) l l l %s #include <stdio.h> int main(void) { prind( ABCD"); // return 0; }

4.4 (5/21) (Null) (NULL) ü (Null) \0 ASCII 0(10 ) ü (NULL) 0 int* p=null;

4.4 (6/21)- - - [4-24.c ] #include <stdio.h> int main(void) { char array[ ]="ABCD"; // } // prind("%c %c %c %c %c \n", array[0], array[1], array[2], array[3], array[4]); prind("%d %d %d %d %d \n", array[0], array[1], array[2], array[3], array[4]); // prind("%d \n", sizeof(array)); return 0;

4.4 (7/21)- - - [4-25.c ] #include <stdio.h> int main(void) { char array[ ]={'A', 'B', 'C', 'D', '\0 }; // } // prind("%c %c %c %c %c \n", array[0], array[1], array[2], array[3], array[4]); prind("%d %d %d %d %d \n", array[0], array[1], array[2], array[3], array[4]); return 0;

4.4 (8/21)- - - [4-26.c ] #include <stdio.h> int main(void) { char array[ ]="ABCD"; // \0 // prind("%s\n", array); prind("%s\n", array+1); prind("%s\n", array+2); prind("%s\n", array+3); } return 0;

4.4 (9/21)- - - [4-27.c ] #include <stdio.h> int main(void) { char array1[ ]={'A', 'B', 'C', 'D', '\0'}; // char array2[ ]={'A', 'B', 'C', 'D'}; // // prind("%s\n", array1); prind("%s\n", array2); } return 0;

4.4 (10/21)- - - [4-28.c ] #include <stdio.h> int main(void) { char array[ ]="ABCD"; // } array[0]='x'; prind("%s \n", array); return 0;

4.4 (11/21) ü.. ü.. %s. %s (\0)

4.4 (12/21)- - - [4-29.c ] #include <stdio.h> int main(void) { char* p="abcd"; prind("%s\n", p); prind("%s\n", p+1); prind("%s\n", p+2); prind("%s\n", p+3); // ABCD p } return 0;

4.4 (13/21)- - - [4-30.c ] #include <stdio.h> int main(void) { char array[ ]="ABCD"; char* p="abcd"; // p p[0]='x'; // array[0]='x'; // p=array; // array=array+1; // prind("%s \n", p); prind("%s \n", array); } return 0;

4.4 포인터와 문자 그리고 포인터와 문자열 (14/21)- - - [4-31.c 실습] #include <stdio.h> int main(void) { char* p= &"ABCD"; // char* p="abcd"; prind("%x \n", p); prind("%x \n", p+1); prind("%x \n", p+2); prind("%x \n", p+3); prind("%x \n", p+4); prind("- - - - - - - - - \n"); prind("%x %x \n", &"ABCD", p); return 0; }

4.4 (15/21)- - - [4-32.c ] char* p="good morning"; char* q="c- language"; char* array[2]={"good morning", "C- language"}; // prind("%s \n", p); prind("%s \n", q); prind("- - - - - - - - - - - \n"); prind("%s \n", array[0]); prind("%s \n", array[1]); prind("- - - - - - - - - - - \n"); prind("%s \n", p+5); prind("%s \n", q+2); prind("- - - - - - - - - - - \n"); prind("%s \n", array[0]+5); prind("%s \n", array[1]+2);

4.4 포인터와 문자 그리고 포인터와 문자열 (16/21)- - - [4-32.c 분석] char* p="good morning"; char* q="c- language ;

4.4 포인터와 문자 그리고 포인터와 문자열 (17/21)- - - [4-32.c 분석] char* array[2]={"good morning", "C- language"}; // 포인터 배열 선언 == char* array[2]={&"good morning", &"C- language"}; // 같은 표현

4.4 (18/21) ü const 1. 3. 5 1 과 2.

4.4 (19/21)- - - [4-33.c ] 1. #include <stdio.h> int main(void) { char a='a'; char b='b'; char* const p=&a; // p=&a *p='c'; // prind("%c \n", *p); prind("%c \n", a); } p=&b; // return 0;

4.4 (20/21)- - - [4-34.c ] 2. #include <stdio.h> int main(void) { char a='a'; char b='b'; const char* p=&a; // *p prind("%c \n", *p); prind("%c \n", a); p=&b; // prind("%c \n", *p); prind("%c \n", b); } a= X ; b='c'; *p='d'; return 0; //

4.4 (21/21)- - - [4-35.c ] 3. char a='a'; char b='b'; const char* const p=&a; prind("%c \n", *p); prind("%c \n", a); a='x'; b='c'; // // prind("%c \n", a); prind("%c \n", b); p=&b; // *p='d'; //

1 2