Similar documents
joho07-1.ppt

18 C ( ) hello world.c 1 #include <stdio.h> 2 3 main() 4 { 5 printf("hello World\n"); 6 } [ ] [ ] #include <stdio.h> % cc hello_world.c %./a.o

新・明解C言語 ポインタ完全攻略

/* do-while */ #include <stdio.h> #include <math.h> int main(void) double val1, val2, arith_mean, geo_mean; printf( \n ); do printf( ); scanf( %lf, &v

Microsoft Word - no15.docx

‚æ4›ñ

超初心者用

untitled

ex12.dvi

10

02: 変数と標準入出力

untitled

02: 変数と標準入出力

‚æ2›ñ C„¾„ê‡Ìš|

tuat1.dvi

02: 変数と標準入出力

C言語によるアルゴリズムとデータ構造

3.1 stdio.h iostream List.2 using namespace std C printf ( ) %d %f %s %d C++ cout cout List.2 Hello World! cout << float a = 1.2f; int b = 3; cout <<

C C UNIX C ( ) 4 1 HTML 1

[1] #include<stdio.h> main() { printf("hello, world."); return 0; } (G1) int long int float ± ±

void hash1_init(int *array) int i; for (i = 0; i < HASHSIZE; i++) array[i] = EMPTY; /* i EMPTY */ void hash1_insert(int *array, int n) if (n < 0 n >=

PowerPoint Presentation

Microsoft Word - no14.docx

A/B (2018/10/19) Ver kurino/2018/soft/soft.html A/B

Microsoft Word - no202.docx

1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l

Prog1_10th

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

tuat2.dvi

17 1. strucr Potter ( ) Harry Potter and the Philosopher s Stone 1997 English Title : Harry Potter and the Philosopher s Stone : : 1997 #include<stdio

mstrcpy char *mstrcpy(const char *src); mstrcpy malloc (main free ) stdio.h fgets char *fgets(char *s, int size, FILE *stream); s size ( )

C B

02: 変数と標準入出力

Informatics 2014

P05.ppt

1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return 0; 戻り値 1: main() 2.2 C main

新版明解C言語 実践編


II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

橡Pro PDF

解きながら学ぶC言語

gengo1-11

Informatics 2015

Microsoft Word - Training8_データ構造とポインタ.docx

r08.dvi

解きながら学ぶC++入門編

ex14.dvi

02: 変数と標準入出力

Original : Hello World! (0x0xbfab85e0) Copy : Hello World! (0x0x804a050) fgets mstrcpy malloc mstrcpy (main ) mstrcpy malloc free fgets stream 1 ( \n

数値計算

Microsoft PowerPoint - CproNt02.ppt [互換モード]

ohp08.dvi

Microsoft Word - no15.docx

Informatics 2010.key

卒 業 研 究 報 告.PDF

2008 IIA (program) pro(before)+gram(write) (artificial language) (programming languege) (programming) (machine language) (assembly language) ( )

I J

I ASCII ( ) NUL 16 DLE SP P p 1 SOH 17 DC1! 1 A Q a q STX 2 18 DC2 " 2 B R b

II 3 yacc (2) 2005 : Yacc 0 ~nakai/ipp2 1 C main main 1 NULL NULL for 2 (a) Yacc 2 (b) 2 3 y

main

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裶²ó ¨¡ À©¸æ¹½Â¤¡§·«¤êÊÖ¤· ¨¡

& & a a * * ptr p int a ; int *a ; int a ; int a int *a

第1回 プログラミング演習3 センサーアプリケーション

r03.dvi

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

A/B (2018/06/08) Ver kurino/2018/soft/soft.html A/B

(300, 150) 120 getchar() HgBox(x, y, w, h) (x, y), w, h #include <stdio.h> #include <handy.h> int main(void) { int i; double w, h; } HgO

ohp03.dvi

C言語入門

初歩のC言語ターミナル_2014_May.pages

prog-text.dvi

(K&R 2.9) ~, &,, >>, << 2. (K&R 5.7) 3. (K&R 5.9) 4. (K&R 5.10) (argc argv atoi(), atof() ) 5. (K&R 7.5) (K&R 7.6) - FILE, stdin, stdout, std

pptx

導入基礎演習.ppt

untitled

C ( ) C ( ) C C C C C 1 Fortran Character*72 name Integer age Real income 3 1 C mandata mandata ( ) name age income mandata ( ) mandat

2 P.S.P.T. P.S.P.T. wiki 26

Microsoft Word - C.....u.K...doc

P02.ppt

Microsoft Word - Cプログラミング演習(11)

Microsoft Word - Cプログラミング演習(7)

(search: ) [1] ( ) 2 (linear search) (sequential search) 1


I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() 2 double *a[ ]; double 1 malloc() dou

新・明解C言語で学ぶアルゴリズムとデータ構造

K227 Java 2

double float

PowerPoint プレゼンテーション

Prog1_15th

gengo1-2

(1 ) scanf(

char char 1 signed char unsigned char ( ; single-quote 0x27) ASCII Japan Advanced Institute of Science and Technology

1-4 int a; std::cin >> a; std::cout << "a = " << a << std::endl; C++( 1-4 ) stdio.h iostream iostream.h C++ include.h 1-4 scanf() std::cin >>

A/B (2010/10/08) Ver kurino/2010/soft/soft.html A/B

/* sansu1.c */ #include <stdio.h> main() { int a, b, c; /* a, b, c */ a = 200; b = 1300; /* a 200 */ /* b 200 */ c = a + b; /* a b c */ }

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (


Microsoft PowerPoint - 11.ppt [互換モード]

Transcription:

C V C

6 1 6.1.............................. 1 6.......................... 3 6.3..................... 5 6.4 NULL............................. 8 6.5......................... 9 6.6.............................. 1 6.6.1 sizeof............................... 13 6.6...................... 14 6.7............................. 17 6.7.1...................... 17 6.7.......................... 6.7.3................ 3 6.7.4.......................... 5 6.8......................... 7 6.9.......................... 30 6.10................................... 3 6.10.1 strlen................... 3 6.10. strcat................... 33 6.11................................. 33

1 6 C 1 6.1 hoge C int hoge int hoge; hoge int hoge hoge 6.1 hoge hoge 100 p_piyo p_piyo hoge 6.6 150

6.1 6.1: 6.: hoge p piyo

6 int int double double double int int p piyo int* p_piyo; int *p_piyo; int *p_hoge,*p_piyo p hoge p piyo int* p_hoge, p_piyo p hoge p piyo int 6. int hoge; int 6.1 6.1 int hoge 100 int* p_piyo 6.3 p piyo 3

6. 6.3: int hoge; int* p_piyo; hoge = 10; p_piyo = &hoge; int hoge int( hoge hoge = 10; hoge 10 p_piyo p_piyo = hoge; 6.4 p_piyo int* int* (int ( 6.4: p_piyo hoge & p_piyo = &hoge 6.5 4

6 6.5: & &hoge hoge 6.3 3 int main(void) 5 int hoge; 6 int* p_piyo; 7 8 hoge = 10; 9 p_piyo = &hoge; 10 11 printf("hoge address :%p\n", &hoge); 1 printf("hoge :%d\n", hoge); 13 printf("p_piyo :%p\n", p_piyo); 14 printf("*p_piyo:%d\n", *p_piyo); 15 printf("p_piyo address :%p\n", &p_piyo); 16 } printf %p 6.6 5

6.3 6.6: printf("hoge address :%p\n",&hoge); & hoge address : 100 1 printf("hoge :%d\n",hoge); hoge printf("p_piyo :%p\n",p_piyo); p_piyo printf("*p_piyo:%d\n",*p_piyo); *p_piyo *p_piyo : 10 hoge *p_piyo p_piyo p_piyo 100 100 hoge *p_piyo * * int* p_hoge; /* * */ 1 100 OS hoge address :001F580 6

6 int piyo = 10; p_hoge = &piyo; /* p_hoge piyo * */ printf("%d", *p_hoge); * * printf("p_piyo address :%p\n", &p_piyo); hoge address : 100 hoge : 10 p_piyo : 100 *p_piyo : 10 p_piyo address : 150 C void* 1 int main(void) { 3 int hoge = 10; 4 void* p_piyo = &hoge; 5 6 /* bar = *p_piyo */ 7 int bar = *( (int*)p_piyo ); 8 9 return 0; 10 } int bar = *p_piyo; 7

6.4 NULL p piyo ( hoge) int* 6.1 6.6 6.6 6.7 p_piyo hoge *p_piyo 6.7: 6.4 NULL int hoge; printf("%d",hoge); hoge int* p p p 8

6 p = NULL; p NULL p NULL NULL #define NULL 0 p = NULL p = 0 p = 0 #define NULL ( (void*)0 ) NULL int* p = NULL printf("%d",*p); p 3 int* int* p_piyo = 10; NULL 0 int* p_piyo = 0; C 0 0 NULL 4 6.5 swap 1 void swap( int x, int y ) { 3 int tmp = x; NULL 3 Java NullPointerException 4 0 NULL JAVA null 9

6.5 4 x = y; 5 y = tmp; 6 } 3 void swap( int x, int y ) 5 int tmp = x; 6 x = y; 7 y = tmp; 8 } 9 10 int main(void) 11 { 1 int hoge = 10, piyo = 5; 13 14 swap( hoge, piyo ); 15 printf("hoge : %d, piyo : %d\n",hoge, piyo); 16 return 0; 17 } hoge : 10, piyo : 5 swap.?? 6.8 x y hoge piyo 10

6 6.8: 3 void swap(int* x, int* y); /* */ 4 5 int main(void) 6 { 7 int hoge = 10, piyo = 5; 8 9 swap( &hoge, &piyo ); 10 printf("hoge : %d, piyo : %d\n",hoge,piyo); 11 return 0; 1 } 13 14 void swap(int* x, int* y) 15 { 16 int tmp = *x; 17 *x = *y; 18 *y = tmp; 19 } 6.9 *x hoge *y piyo hoge : 5, piyo : 10 hoge piyo &hoge scanf 11

6.6 6.9: & 6.6 int char double?? 6.1 6.1: short -3768 +3767 int -147483648 +147483647 long -147483648 +147483647 unsigned short 0 +65535 unsigned int 0 +49496795 unsigned long 0 +49496795 char -18 +17 0 +55 unsigned char 0 +55 float 3.4 * 10^-38 3.4 * 10^+38 double 1.7 * 10^-308 1.7 * 10^+308 1

6 int -147483648 +147483647 char -18 17 0 55 char 1 int 4 5 1 8 8 8 8 00000000 11111111 char 10 0 55 6. char 1 0 55 56 6.6.1 sizeof sizeof sizeof int return int main(void) 3 { 4 char hoge; 5 int piyo; 6 7 printf("char %d ", sizeof(hoge) ); 8 printf("int %d ", sizeof(piyo) ); 9 return 0; 10 } 7 5 6-18 +17 7 13

6.6 char 1 int 4 6.6. int main(void) 3 { 4 char* p_hoge; 5 int* p_piyo; 6 7 printf("char* %d \n", sizeof(p_hoge) ); 8 printf("int* %d \n", sizeof(p_piyo) ); 9 return 0; 10 } char* 4 int* 4 4 8 int main(void) 3 { 4 int array[5] = {5,10,15,0,5}; 5 int* p; 8 int* char* 14

6 6 p = &array[0]; 7 8 printf("p[0] = %d\n",*p); 9 p++; 10 printf("p[1] = %d\n",*p); 11 } main 3 6.10 6.11 6.10: 6.11: 15

6.6 Array[0] 100 int 4 Array[1] 104 p++; p 1 100 + 1 101 int 4 100 + 4 104 p++; 6.1 6.1: 4 int* char* 1 100 +1 =101 p[0] = 5 p[1] = 10 16

6 6.7 6.7.1 3 int main(void) 5 int array[5] = { 1,, 3, 4, 5 }; 6 int* p; 7 8 p = &array[0]; 9 10 printf("*(p+0) : %d\n", *(p + 0) ); 11 printf("*(p+1) : %d\n", *(p + 1) ); 1 printf("*(p+3) : %d\n", *(p + 3) ); 13 return 0; 14 } int array[5] = { 1,, 3, 4, 5 }; int* p; p = &array[0]; 6.13 array[0] 100 int 4 array[1] 104 array array[0] array[4] 5 array array[4] 116 int* p p = array[0]; 17

6.7 6.13: array[0] int p int* (int) int* array[0] p = &array[0]; & array[1] p p = &array[1]; printf("*(p+0) : %d\n", *(p+0) ); printf("*(p+1) : %d\n", *(p+1) ); printf("*(p+3) : %d\n", *(p+3) ); *p p 100 *p 100 array[0] *(p + 0) *(p) *p p 1 6.13 6.14 18

6 6.14: printf("*(p+0) : %d\n", *(p+0) ); array[0] 1 printf("*(p+0) : %d\n", *(p+1) ); p 100 1 101 int size 4 p+1 int 4 p p+1 p 100 int 4 104 *(p+0) *(100 ) *(p+1) *(100 +4 ) *(104 ) array[1] printf("*(p+0) : %d\n", *(p+3) ); *(p+0) : 1 *(p+1) : *(p+3) : 4 19

6.7 *( p + 1 ); p + 1 3 int main(void) 5 int array[5] = { 1, 5, 10, 15, 0 }; 6 int* p; 7 8 p = &array[0]; 9 printf("array[0] : %d\n", *(p + 0) ); 10 printf("array[1] : %d\n", *(p + 1) ); 11 1 printf("*p+1 : %d\n", *p + 1 ); 13 14 return 0; 15 } array[0] : 1 array[1] : 5 *p+1 : *(p + 1) *p + 1 3 + 5 9 48 + * 5 9 3 3 + 5 9 (3 + 5) 9 C *p + 1 * + * *p *p 1 1 + 1 printf("*p+1 : %d\n", *p + 1 ); p 1 0

6 printf("*p+1 : %d\n", *(p + 1) ); 3 int main(void) 5 int array[5] = { 1,, 3, 4, 5 }; 6 int* p; 7 8 p = &array[0]; 9 10 printf("*(p+0) : %d\n", *(p+0) ); 11 printf("*(p+1) : %d\n", *(p+1) ); 1 printf("*(p+3) : %d\n", *(p+3) ); 13 return 0; 14 } p = &array[0]; p = array; 3 int main(void) 5 int array[5] = { 1,, 3, 4, 5 }; 6 int* p; 7 8 p = array; /* p array */ 9 10 printf("*(p+0) : %d\n", *(p+0) ); 11 printf("*(p+1) : %d\n", *(p+1) ); 1

6.7 1 printf("*(p+3) : %d\n", *(p+3) ); 13 return 0; 14 } array p 6.7. 3 int main(void) 5 int array[5] = { 1,, 3, 4, 5 }; 6 int* p; 7 8 p = array; /* p array */ 9 10 printf("p[0] : %d\n", p[0] ); 11 printf("p[1] : %d\n", p[1] ); 1 printf("*(p+1) : %d\n", *(p + 1) ); 13 return 0; 14 } p[0] : 1 p[1] : *(p+1) : p[0] p array p[0] *(p + 0) p[1] *(p + 1) *(p + 1) p[1]

6 3 int main(void) 5 int array[5] = { 1,, 3, 4, 5 }; 6 int* p; 7 8 p = &array[1]; /* array[1] */ 9 10 printf("p[0] : %d\n", p[0] ); 11 printf("p[1] : %d\n", p[1] ); 1 printf("p[-1]: %d\n", p[-1] ); 13 return 0; 14 } p[0] : p[1] : 3 p[-1]: 1 p[-1] array[-1] p[-1] *(p - 1) *(p + 1) *(1 + p) (3 + 5) (5 + 3) *(1 + p) 1[p] 6.7.3 int i; 3 void myputs(char str[0]) 3

6.7 5 int i; 6 for( i = 0; str[i]!= \0 ; i++ ) { 7 putchar( str[i] ); 8 } 9 printf("\n"); 10 } 11 1 int main(void) 13 { 14 char str[0] = "Hello world"; 15 myputs( str ); 16 return 0; 17 } Hello world myputs str char str[0] char* str main int main(void) { char str[0]; char* str; } str str char str[0] char* str myput void myputs(char* str) { int i; for( i = 0; str[i]!= \0 ; i++ ) { putchar(str[i]); 4

6 } } printf("\n"); void myputs(char str[]) void myputs(char* str); void myputs(char str[0]); void myputs(char str[]); myputs( str ); myputs( &str[0] ) main char str[10000]; myputs 6.7.4 int array[5] int 5 int* p[5] int* 5 5

6.7 3 int main(void) 5 int array[5] = {1,, 3, 4, 5}; 6 int* p[5]; 7 int i; 8 9 for(i = 0; i < 5 ; i++) { 10 p[i] = &array[i]; 11 printf("p[%d] : %p\n", i, p[i]); 1 } 13 14 *p[0] += 10; 15 16 for(i = 0; i < 5 ; i++) { 17 printf("*p[%d] : %d\n", i, *p[i]); 18 } 19 } for array[i] p[i] p[i] 6.15 for p[0] : 100 p[1] : 104 p[] : 108 p[3] : 11 p[4] : 116 *p[0] += 10 p[0] 10 100 10 array[0] 10 for *p[i] p[i] 6

6 6.15: p[0] : 100 p[1] : 104 p[] : 108 p[3] : 11 p[4] : 116 *p[0] : 11 *p[1] : *p[] : 3 *p[3] : 4 *p[4] : 5 6.8 7

6.8 3 int main(void) 5 char* str = "Hello"; 6 printf("%s\n", str ); 7 8 return 0; 9 } Hello 6.16 str 6.16: char* str = "Hello" char str[10] = "Hello" 6.17 str char str 8

6 6.17: 3 int main(void) 5 char* str = "Hello"; 6 char str[10] = "Hello"; 7 8 str[0] = B ; /* */ 9 str[0] = B ; /* OK */ 10 11 return 0; 1 } str[0] *(str + 0) str str[0] = B str 9

6.9 6.9 char int char* int* 3 int main(void) 5 int hoge = 10; 6 int* p_hoge; 7 int** p_p_hoge; 8 9 p_hoge = &hoge; 10 p_p_hoge = &p_hoge; 11 1 printf("hoge = %d\n", hoge); 13 printf("*p_hoge = %d\n", *p_hoge); 14 printf("p_hoge address = %p\n", &p_hoge); 15 printf("p_p_hoge = %p\n", p_p_hoge); 16 printf("**p_p_hoge = %d\n", **p_p_hoge); 17 18 return 0; 19 } 10 6.18 6.19 6.18: 30

6 6.19: p hoge hoge p p hoge int* p p hoge p hoge hoge 6.0 6.0: **p p hoge *( *p p hoge ) *( p hoge ) hoge = 10 *p_hoge = 10 p_hoge address = 150 p_p_hoge = 150 **p_p_hoge = 10 31

6.10 6.10 6.10.1 strlen strlen my strlen my strlen 3 int my_strlen(const char* str) 5 int i = 0; 6 while( *str++ ) { 7 i++; 8 } 9 return i; 10 } 11 1 int main(void) 13 { 14 char str[0] = "Hello world"; 15 printf("%s %d \n", str, my_strlen(str)); 16 return 0; 17 } const char* str my strlen str[i] = E ; *(str + i) = E ; *str++; *(str++); NULL NULL \0 0. while( 0 ) 3

6 6.10. strcat strcpy my strcpy 3 void my_strcpy(char* dest, const char* src) 5 while( *dest++ = *src++ ) 6 ; 7 } 8 9 int main(void) 10 { 11 char str[0] = "Hello world"; 1 char copy[0]; 13 14 my_strcpy(copy, str); 15 printf(" %s \n",copy); 16 return 0; 17 } 6.11 1 3 int main(void) 5 int hoge = 30; 6 int* piyo = &hoge; 7 8 printf("out1 :%d\n",hoge); 9 printf("out :%d\n",*piyo); 33

6.11 10 11 return 0; 1 } 3 int main(void) 5 int x = 10; 6 int y = 0; 7 int* hoge = &x; 8 int* piyo = &y; 9 int* tmp; 10 11 tmp = hoge; 1 hoge = piyo; 13 piyo = tmp; 14 15 printf("out1 :%d\n",x); 16 printf("out :%d\n",*hoge); 17 18 return 0; 19 } 3 3 int main(void) 5 int array[5] = {1,,3,4,5}; 6 int* p = &array[0]; 7 34

6 8 p += ; 9 printf("out1 :%d\n",*p); 10 11 return 0; 1 } 4 3 int main(void) 5 int array[5] = { 1, 5, 10, 15, 0 }; 6 int* p; 7 8 p = &array[0]; 9 10 printf("%d %d %d %d %d\n",*(p+0), *(p+1), p[], 3[p], *p ); 11 p = array; 1 printf("%d %d %d %d %d\n",*(p+0), *(p+1), p[], 3[p], *p ); 13 14 *p += 10; 15 printf("p[0] : %d\n",p[0]); 16 17 (*p)++; 18 printf("*p : %d\n",*p); 19 0 *(p++); 1 printf("*p : %d\n",*p); } 5 35

6.11 3 int main(void) 5 char* p = "Hello world"; 6 7 printf("%s\n",p); 8 p[1] = a ; 9 printf("%s\n",p); 10 11 return 0; 1 } 6 hoge 100 i 00 j 300 k 400 3 int main(void) 5 int hoge = 10; 6 int* i = &hoge; 7 int** j = &i; 8 int*** k = &j; 9 10 printf("hoge = %d\n", hoge); 11 printf("&hoge= %p\n", &hoge); 1 printf("*i = %d\n", *i); 13 printf("&i = %p\n", &i); 14 printf("&j = %p\n", &j); 15 printf("*j = %p\n", *j); 16 printf("**j = %d\n", **j); 17 printf("k = %p\n", k); 18 printf("*k = %p\n", *k); 19 printf("**k = %p\n", **k); 0 printf("***k = %d\n", ***k); 1 return 0; 3 } 36

37 [1] Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language Second Edition [] Peter van der Linden, Expert C Programming Deep C Secrets [3], C [4] Bjarne Stroustrup, C++ [5], [6], [7], C [8], C [9], C [10], C [11], 006, http://chihara.naist.jp/people/staff/yasumuro/pub/c-ensyu006/ [1] Ryo Kawahara, C/C++, http://www.stat.phys.kyushu-u.ac.jp/~ryokawa/cbegin_3/pdf/cbegin.pdf [13] TOMOJI, C, http://www9.plala.or.jp/sgwr-t/ [14], C, http://homepage1.nifty.com/toshio-k/prog/c/ [15], C, http://wisdom.sakura.ne.jp/programming/c/index.html