8주차: Strings, Arrays and Pointers

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.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
C 언어 (STS ) 10. Pointer Applications.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
#include <stdio.h> int main(void) { float radius; // 원의 반지름
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
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장. 참조 타입.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
10주차: Structures and Others
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
포인터 활용 포인터 활용.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
6주차: Functions in C and Others
2주차: 변수, 수식, Control Flow.
6장. printf와 scanf 함수에 대한 고찰
Tail-recursive Function, High-order Function
14장. 포인터와 함수에 대한 이해.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
11장. 1차원 배열.
* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제3장 치환, 주소, 대화식 입력 *
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
C 언어 교육 02 주차 – scanf & 반복문과 조건문 교육부장 조하정.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
Chapter 08. 함수.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
Canary value 스택 가드(Stack Guard).
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
제 6 장 함수(functions).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
7주차: Functions and Arrays
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

8주차: Strings, Arrays and Pointers

Strings 문자열(String) “I am a boy.”, “String”, “”(Null string), ... NULL string은 비어 있는 string이라고 생각하면 된다. 문자열(string)은 문자(character)의 집합이다.

Strings in Memory “I am a boy.” ‘I’, ‘ ’, ‘a’ 등은 문자(char)이다. ‘\0’은 문자열의 끝을 나타내는 특수문자이다. 메모리의 어딘가에... ‘I’ ‘ ’ ‘a’ ‘m’ ‘b’ ‘o’ ‘y’ ‘.’ ‘\0’ 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012

문자열과 배열(1/2) 문자열은 문자의 집합이므로 char의 배열(array)로 문자열을 나타낼 수 있다. char tmpstr[12]; tmpstr은 char 12개의 배열 변수이다. 따라서 tmpstr은 문자(char) 12개를 저장할 수 있다.

문자열과 배열(2/2) “I am a boy.”같은 문자열은 char array 변수 tmpstr에 저장될 수 있다. tmpstr[0] = ‘I’ tmpstr[1] = ‘ ’ ... tmpstr[10] = ‘.’ tmpstr[11] = ‘\0’ I am a boy. 11문자와 특수문자 ‘\0’까지 저장해야 하므로 12개의 원소를 가지는 배열이 필요하다.

Memory and Variables - 메모리의 어딘가에... a b 1000 1004 1008 1012 1016 #include<stdio.h> int main(void) { int a = 3, b = 4; printf(“%d %d\n”, a, b); return 0; } - 메모리의 어딘가에... a b 1000 1004 1008 1012 1016 -오른쪽 그림을 보면 메모리 1004번지에 a가 1008번지에 b가 자리잡고 있음을 알 수 있다. 1004번지에는 3, 1008번지에는 4라는 값이 들어 있을 것이다.

Pointers in C Pointer 변수는 메모리의 번지(주소)를 저장하는데 쓰이는 변수이다. 앞의 예제에서 보이는 1004, 1008같은 주소를 포인터 변수에 저장할 수 있다.

Pointer Variables 포인터 변수의 선언 일반 변수의 선언과 같으나 변수 앞에 *를 붙인다. int *p; char *p; 문자(char) 변수의 주소에 대한 포인터 변수 p의 선언 변수의 타입(int, char, float, ...)에 따라서 별개의 포인터 변수를 사용해야 한다. 정수변수의 주소를 저장하는 정수 포인터 변수(int *) 실수변수의 주소를 저장하는 실수 포인터 변수(float *)

Pointer Variables for Each Type 포인터 변수는 각 데이터 타입별로 있다. 정수포인터, 문자포인터, ... 각 데이터 타입의 크기가 다르기 때문에 데이터 타입의 크기에 따라서 메모리에서 차지하는 영역이 다르다.

Pointer Variable의 초기화 int *p, i; p = 0; p = NULL; p = &i; p = (int *) 1776; p에 정수상수 1776을 정수포인터로 변환한 값을 넣는다.

& Operator & 연산자는 변수의 주소(번지)를 돌려주는 연산자이다. scanf(“%d”, &p) &p: 변수 p의 주소이다. scanf(“%d”, &p) 이제 scanf 함수에서 &를 붙이는 이유를 알 수 있다. scanf의 인자는 control_string(위의 예에서는 “%d”)과 변수의 주소(&p) 인 것이다.

Type Casts Type cast 연산자 데이터 타입을 변환해 주는 연산자 (float) i <- 이런 식으로 사용된다(여기서 i는 int 변수라고 생각하자.). 그러면 위의 수식은 i의 값을 가지는 실수로 변환된다. 즉, i에 3이라는 값이 들어 있었으면 (float) i는 3.0의 값을 가지게 된다.

An Example without Type Casts #include<stdio.h> #define STUDENT_NUM 74 int main(void) { int sn = STUDENT_NUM; int total_score = 6750; float avg_score; avg_score = total_score / sn; printf(“Average score is %.2f\n”, avg_score); return 0; } -이 프로그램은 점수의 총합 6750을 학생수 74로 나누어 평균점수를 구하는 프로그램이다. -빨간 부분을 보면 =의 오른편은 정수수식이며 왼편은 실수변수이다. -total_score / sn은 정수수식으로 정수값만을 가질 수 있다. 따라서 이 수식의 값은 91이 된다. -91을 실수변수 avg_score에 할당할 때 91.0이 avg_score에 들어간다. 따라서 최종 결과로 91.00을 화면에 출력하게 된다.

A Type Cast Example #include<stdio.h> #define STUDENT_NUM 74 int main(void) { int sn = STUDENT_NUM; int total_score = 6750; float avg_score; avg_score = (float) total_score / (float) sn; printf(“Average score is %.2f\n”, avg_score); return 0; } -이 프로그램은 평균점수를 계산할 때 type cast를 한다. total_score를 실수로 타입변환하면 6750.0이 된다. sn을 실수로 변환하면 74.0이 된다. -이제 (float) total_score / (float) sn은 실수수식이며 6750.0 / 74.0 = 91.22...라는 값을 가진다. -이 프로그램은 91.22를 화면에 출력한다.

교재에서 강의와 연관된 부분 3장 3.11 6장 6.1, 6.2, 6.10