2014 ITA 8월 강의 C Programming -5일차- 포인터, 배열, 문자열 정대진 (2014.08.08)

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
Part 11 문자열 ©우균, 창병모 ©우균, 창병모.
2016 ITA 1월 강의 C Programming -4일차- 포인터배열 및 이중포인터 정대진 ( )
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
-Part2- 제3장 포인터란 무엇인가.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
5장 배열 작성자 : 변재현.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
5장. 참조 타입.
C 프로그래밍.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
11 표준 입출력과 파일 입출력 데이터를 읽고 쓰는 다양한 방법 익히기!.
6장. printf와 scanf 함수에 대한 고찰
프로그래밍 랩 – 7주 리스트.
14장. 포인터와 함수에 대한 이해.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
-Part3- 제2장 문자열 표준 함수와 기타 표준 함수
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
24장. 파일 입출력.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
Canary value 스택 가드(Stack Guard).
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
데이터 동적 할당 Collection class.
제 15 강 문자와 코드 shcho.pe.kr.
구조체 (Structure).
Chapter 10 데이터 검색1.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
Chapter 16. 메모리 동적 할당.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

2014 ITA 8월 강의 C Programming -5일차- 포인터, 배열, 문자열 정대진 (2014.08.08)

목차 복습 포인터 다차원 배열 문자열 함수

복습 (1) 배열 1차원 배열 문자열 Type 변수명[개수]; 인덱스는 0부터 시작 배열의 초기화 방법 마지막에 NULL 문자 for문 이용 = {1, 2, 3, 4} = {1, 2} 부족한 부분은 0으로 채워짐 문자열 마지막에 NULL 문자 문자열 scanf()에는 & 붙이지 않음

복습 (2) 포인터 변수 주소 값의 저장 &변수 => 변수의 주소값 반환 Type * 포인터변수명; *포인터변수명 = 1; 포인터 변수 선언 시 항상 NULL(0)로 초기화!!! 배열 이름 포인터처럼 사용 배열 이름에 값 대입 불가 포인터를 배열처럼 사용 가능 포인터 연산 시 Type의 byte 수만큼 증감 “string”상수는 문자열의 주소값을 반환 포인터도 변수 타입이므로 배열로 생성 가능

프로그래밍 실습 (문자열) 사용자로부터 문자열을 입력받았을 때, 이것이 회문 (Palindrome)인지 아닌지 알려주는 함수 작성 회문 : 앞으로 읽으나, 뒤로 읽으나 같은 단어 구현의 편의를 위해서 대소문자까지 같은 경우만 회문으로 인정

포인터와 함수 함수의 파라미터 전달 방법 함수의 파라미터 전달 방법의 문제점 극복 방법 값의 복사 (call by value) 원본 값의 변화 불가 배열의 전달 불가 극복 방법 포인터 값 전달 (call by reference)

포인터와 함수 배열을 함수에 전달

포인터와 함수 배열 전달을 위한 올바른 예

포인터와 함수 배열을 함수의 인자로 전달받는 선언 (다른 느낌) 파라미터 선언에서만 가능

포인터와 함수 이제서야 풀리는 scanf() 함수에서 ‘&’사용의 비밀 일반 변수 scanf() / 문자열 scanf()

프로그램 실습 며칠 전에 만들 수 없었던 swap함수를 포인터를 이용하여 작성하시오

포인터와 함수 포인터 덕분에 생겨난 const 사용의 두 분류 타입의 const 포인터의 const

포인터와 함수 포인터 const는 왜 쓸까!? 코드의 안전성을 높이기 위해서 사용 파라미터로 넘어온 포인터를 변경하지 않기 위해서 사용 const 선언의 변수를 수정 시, 컴파일 에러

다차원 배열 다차원 배열

다차원 배열 2차원 배열

다차원 배열

다차원 배열 2차원 배열 예제

다차원 배열 2차원 배열의 메모리 할당 형태

다차원 배열 2차원 배열 초기화

다차원 배열 2차원 배열 초기화 한 줄로 초기화 (좌상단 -> 우하단)

다차원 배열 2차원 배열 초기화 공백을 주고 초기화

프로그래밍 실습 3x4 짜리 2차원 배열을 1차원 배열을 이용해서 나타내시오. 초기화 : 1 2 3 4 5 6 7 8 9 10 11 12 사용자 입력 좌표 (x,y) x : 1~4 , y : 1~3 사용자로부터 좌표와 값을 입력 받고 변경 후, 화면에 변경된 매트릭스 출력 사용자 입력 예시 : 1 3 5 -> (1,3) <현재값 9>에 5를 대입하라는 뜻

다차원 배열 3차원 배열

포인터의 포인터 포인터 변수를 포인팅

포인터의 포인터 포인터 변수 swap 1

포인터의 포인터 포인터 변수 swap 2

포인터의 포인터 3중 포인터까지!!!

main()함수 파라미터 메인 함수에도 파라미터가 들어 올 수 있음 파라미터의 개수 (argc) 파라미터 문자열 (argv) int main(int argc, char *argv[]) (0번째 파라미터는 프로그램 path) main() 함수의 파라미터들을 모두 순서에 맞춰 출력해보세 요

문자, 문자열 함수 스트림 OS에 의해서 자동 생성

문자, 문자열 함수 스트림의 종류 자동 생성 이외의 스트림은 프로그래머가 직접 생성 예시 : 파일 입출력 스트림

문자, 문자열 함수 문자 입출력 함수

문자, 문자열 함수 문자 입출력 예제

문자, 문자열 함수 EOF (End Of File) 파일의 끝 Windows에서 CTRL + Z Linux에서 CTRD + D

문자, 문자열 함수 왜 getchar() 함수는 int형이 반환 타입인가??

문자, 문자열 함수 문자열 입출력 함수 문자열 출력 puts() : 출력 후 개행 fputs() : 출력만 함

문자, 문자열 함수 문자열 입력 함수 gets() : 막 받음 fgets() : 지정된 크기 만큼만 남은 건 버퍼에~

문자, 문자열 함수 입력 버퍼가 문제가 되나요!?

문자, 문자열 함수 표준 입출력 버퍼 비우는 함수 stdin stdout 입력 버퍼에 남아 있는 데이터의 소멸 fflush()는 사실 출력버퍼를 위한 함수라서 결과를 보장받지 못함 stdout 출력 버퍼에 저장된 데이터를 목적지로 최종 전송

문자, 문자열 함수 입력 버퍼 삭제

문자, 문자열 함수 문자열 길이 함수

문자, 문자열 함수 문자열 복사 함수

문자, 문자열 함수 문자열 복사 함수

문자, 문자열 함수 문자열 덧붙임 함수

문자, 문자열 함수 문자열 비교 함수 비교 크기는 ASCII 코드 값 int stricmp(const char *string1, constchar *string2); int strnicmp(const char *string1, constchar *string2, size_t count);

문자, 문자열 함수 문자 검색 함수 char *strchr(const char *string, int c); #include <stdio.h> #include <string.h>   void main(void) {      char str[256];      char *ptr;      int count=0;      printf("아무 문자나 입력하세요 ");      scanf("%s",str);      for (ptr=str;;) {           ptr=strchr(ptr,'a');           if (ptr == NULL) {               break;           }           count++;           ptr++;      }       printf("문자열에 a가 %d개 있습니다.\n",count); } 문자 검색 함수 char *strchr(const char *string, int c); char *strrchr(const char *string, int c);

문자, 문자열 함수 문자열 검색 함수 char *strstr(cont char *string, const char *strSearch); char *strpbrk(const char *string, const char *CharSet);

문자, 문자열 함수 문자열 검색 함수 (문자열 토큰 나누기) <공백, 컴마> char *strtok(char *strToken, const char *strDelimit); #include <Turboc.h> #include <string.h>   void main() {      char str[]="I am a boy,you are a girl";      char *p;      p=strtok(str," ,");      while (p!= NULL) {           puts(p);           p=strtok(NULL," ,");      } }

문자, 문자열 함수 문자열 변환 함수 char *strtok(char *strToken, const char *strDelimit); #include <stdio.h> #include <string.h>   void main(void) {      char str[]="Made In Korea";      char str2[16];      strcpy(str2,str);      strupr(str2);      printf("strupr => %s\n",str2);      strcpy(str2,str);      strlwr(str2);      printf("strlwr => %s\n",str2);      strrev(str2);      printf("strrev => %s\n",str2);      strset(str2,'*');      printf("strset => %s\n",str2); }

문자, 문자열 함수 부수적 문자열 함수 1 (ctype.h)

문자, 문자열 함수 부수적 문자열 함수 2 (stdlib.h)

프로그래밍 실습 (배운것과 관련 없음) 사용자로부터 10진수의 정수를 받고, 이를 2진수로 변환 출력하는 함수 작성

프로그래밍 숙제 버블정렬의 기본을 알려 드릴테니, 정수형 배열을 입력 받아 버블 정렬하는 함수를 구현하시오. (오름차순) 버블정렬의 기본을 알려 드릴테니, 정수형 배열을 입력 받아 버블 정렬하는 함수를 구현하시오. (오름차순) 버블(bubble) 정렬은 칠판으로 설명

프로그래밍 숙제 사용자가 입력한 문자열로부터 특정 문자열을 찾아서 바꿔 출력하는 프로그램을 작성하시오.

오늘 수업 종료 다음 수업 내용 앞으로 배울 내용들 구조체 포인터 다차원 배열 파일 입출력 메모리관리 (동적할당) 약간의 디버깅방법