SlideShare a Scribd company logo
C-LANG
コンパイル⽅方法

1.	
  cc	
  chap1_̲1.c	
  
       →	
  a.out	
  が⽣生成される

2.	
  cc	
  chap1_̲1.c	
  -‐‑‒o	
  chap1_̲1
       →	
  chap1_̲1	
  が⽣生成される
主なエラーメッセージ

1.	
  syntax	
  error
         -‐‑‒	
  スペルミスなどの⽂文法エラー

2.	
  undeclared
         -‐‑‒	
  宣⾔言されていない変数エラー

3.	
  parse	
  error
         -‐‑‒	
  {}抜けなどの構⽂文エラー
intのあれこれ

・8進数⼊入れる場合は	
  x	
  =	
  0666

・16進数⼊入れる場合は	
  x	
  =	
  0x6F15
インクリメントの順番

・x++
  式を評価してから,	
  xに1を⾜足す

・++x
  xに1を⾜足してから,	
  式を評価
ビット演算⼦子

&	
  :	
  論論理理積	
  
 |	
  :	
  論論理理和
^	
  :	
  排他的論論理理和
~∼	
  :	
  ビットを反転させる
<<	
  :	
  指定した数だけ左へシフト	
  (0埋め)
>>	
  :	
  指定した数だけ右へシフト	
  (機種依存)
条件式

・条件式	
  ?	
  式1	
  :	
  式2

     成⽴立立→式1
     不不成⽴立立→式2
配列列

 int	
  x[30];
 int	
  x[30]	
  =	
  {10,	
  20,	
  30,	
  328};
 int	
  x[]	
  =	
  {10,	
  20,	
  30,	
  328};

 int	
  x[]; ←Error!
⽂文字列列
 char	
  name[20];
 name[0]=ʼ’Sʼ’;	
  name[1]=”u”;	
  name[2]=.....

 char	
  name[20]	
  =	
  {ʻ‘Sʼ’,	
  ʻ‘uʼ’,	
  ʻ‘zʼ’,	
  ʻ‘uʼ’,	
  ʻ‘kʼ’,	
  ʻ‘iʼ’,	
  ʻ‘¥0ʼ’};
 printf(“%s¥n”,	
  name);

 char	
  name[20]	
  =	
  “Suzuki”;	
  でも上と同様の効果

                                          ⽂文字はシングルクォーテーション!
                                          ⽂文字列列はダブルクォーテーション!
⽂文字列列

  scanf(“%d”,	
  x);

  scanf(“%s”,	
  str[0]);
                  ⽂文字列列をscanfする場合、
                  先頭を指定すればOK.
2次元配列列

 int	
  data[3][5]	
  ={	
  {3,4,8,6,4},	
  {6,4,2,2,0},	
  ...};
           ⾏行行	
  	
  列列


                                            5列列



                           3⾏行行
ポインタの役割


 ①	
  配列列に添字を使わずアクセス!(古来)


 ②	
  ⽂文字列列を扱う!


 ③	
  関数の引⽤用として⽤用いる!
ポインタの使い⽅方

int	
  *pa;
pa	
  =	
  &a; a	
  のアドレスを⼊入れる
printf(“%p¥n”,	
  pa); a	
  のアドレスを表⽰示
printf(“%d¥n”,	
  *pa); a	
  の値を表⽰示

*pa	
  +=	
  10;   a	
  に10を⾜足す
ファイルの⼊入出⼒力力	
  -‐‑‒	
  ファイルポインタ編
                                             r	
  	
  読み出し
                                             w	
  	
  書き込み
 FILE	
  *fp;                                a	
  	
  追加
                                             r+	
  読み書き(新規作成なし)
                                             w+	
  読み書き(新規作成あり)
 fp	
  =	
  fopen(“file.txt”,	
  “r”);
                                             a+	
  読み書き(新規作成あり)

 if(	
  (fp	
  =	
  fopen(“file.txt”,	
  “r”))	
  ==	
  NULL	
  ){
        /*	
  エラー処理理	
  */
   }
ファイルの⼊入出⼒力力	
  -‐‑‒	
  ⼊入⼒力力関数編


  while(	
  (c=getc(fp))	
  !=	
  EOF	
  )
   printf(“%c”,	
  c);



  while(	
  fscanf(fp,	
  “%s%d”,	
  city,	
  value)	
  !=	
  EOF	
  )
   printf(“%s	
  -‐‑‒>	
  %d¥n”,	
  city,	
  value);
                                          書式⽂文字の利利⽤用が可能!
ファイルの⼊入出⼒力力	
  -‐‑‒	
  出⼒力力関数編


  for(i=0;	
  name[i]	
  !=	
  (c=getc(fp))	
  !=	
  EOF	
  )
    printf(“%c”,	
  c);



  fprintf(fp,	
  “%s%d”,	
  city,	
  value);

                                        書式⽂文字の利利⽤用が可能!
⾼高度度なポインタ


 1.	
  ⽂文字列列の配列列を持つ

     char	
  *配列列名[]	
  =	
  {“⽂文字列列1”,	
  “⽂文字列列2”,	
  ...	
  };
⾼高度度なポインタ


 2.	
  ポインタのポインタ
    char	
  *p,	
  **dp;
    p	
  =&c;
    dp	
  =	
  &p;

    printf(“%p¥n”,	
  *dp);    変数C	
  のアドレスが表⽰示

    printf(“%d¥n”,	
  **dp);   変数C	
  の中⾝身が表⽰示
コマンドライン引数

 int	
  main(int	
  argc,	
  char	
  *argv[]){
       .....
       .....
       .....
       return	
  0;
   }
モジュール化プログラミング


  -‐‑‒	
  make	
  コマンド
  -‐‑‒	
  関数プロトタイプ宣⾔言
  -‐‑‒	
  ヘッダファイル(.h)
  -‐‑‒	
  読み込む時は	
  #include	
  “header.h”
  -‐‑‒	
  extern	
  int	
  x;	
  //	
  外部変数

                       環境変数で指定されてる場合は、
                       #include	
  <stdio.h>
メモリの管理理

  Score	
  *p,	
  *top;
  if(	
  (p	
  =	
  (Score	
  *)malloc(sizeof(Score)	
  *	
  size))
               ==NULL){
               /*	
  領領域確保エラー	
  */
            }
  top	
  =	
  p;	
  //先頭を覚えておいて…


  /*	
  pをほげほげ	
  */

  free(top);	
  //開放!
⽂文字列列の配列列


  -‐‑‒定義
    char	
  *str[]	
  =	
  {“Hello”,	
  “Good-‐‑‒bye”,	
  “OK”};

  -‐‑‒表⽰示	
  
      	
  printf(“%s¥n”,	
  str[0]);
      	
  printf(“%s¥n”,	
  str[1]);
      	
  printf(“%s¥n”,	
  str[0]);
システムコール

 カーネルの昨⽇日にアクセスする関数
 	
  (代表例例)
  SIGINT	
  :	
  端末からのインタラプト⽂文字
  SIGALRM	
  :	
  alarmシステムコール
  SIGSEGV	
  :	
  不不正なメモリアクセス



 signal(SIGINT,	
  func);

インタラプト⽂文字                   func()	
  を呼び出し
が⼊入⼒力力されたら
fork()

   実⾏行行中のプロセスを複製する
                                   親
         pid	
  =	
  fork();

                                       fork()
         if(	
  pid	
  !=	
  0){
             //	
  親プロセス
         }	
  else	
  {
         	
  	
  //	
  ⼦子プロセス          ⼦子
         }
wait()とexit()
  ⼦子の終了了を待つ                                      wait()

     pid	
  =	
  fork();                     親

     if(	
  pid	
  !=	
  0){
         //	
  親プロセス                             exit()
         wait(&status);	
  //	
  ⼦子の終了了を待つ


     }	
  else	
  {                              ⼦子
     	
  	
  //	
  ⼦子プロセス
         exit(status);	
  //	
  終了了を明⽰示
     }
exec(),	
  execvp()
   他プログラムを実⾏行行
                                                              親
       char	
  *argv[]	
  =	
  {“ls”,	
  “-‐‑‒a”,	
  NULL};
       execvp(“ls”,	
  argv);                                     execvp()


    コマンドのパス                         コマンドライン
                                    引数を渡す
                                                                  親
プロセス間通信

  -‐‑‒	
  パイプ
  -‐‑‒	
  FIFO特殊ファイル
  -‐‑‒	
  ソケット
プロセス間通信	
  -‐‑‒	
  パイプ

    -‐‑‒	
  fd[0]	
  :	
  読み取り専⽤用
    -‐‑‒	
  fd[1]	
  :	
  書き込み専⽤用
    -‐‑‒	
  pipe(fd)

                                    fd[0]     fd[0]

                             親              パイプ           ⼦子


                                    fd[0]         fd[1]
親         パ   ⼦子
プロセス間通信	
  -‐‑‒	
  パイプ

    if(	
  pipe(fd)==	
  -‐‑‒1){
            perror(“pipe”);
            }

    if(	
  (len=write(fd[1],	
  buf,	
  strlen(buf)+1))==NULL){
         perror(“write”);
         }

    if(	
  (len=read(fd[0],	
  buf,	
  strlen(buf)))==NULL){
         perror(“read”);
         }
プロセス間通信	
  -‐‑‒	
  FIFO特殊

    -‐‑‒	
  任意のプロセス間で通信可能
    -‐‑‒	
  mknode(),	
  mkfifo()
    -‐‑‒	
  扱いはファイル操作と同じ




                      親       FIFO   親
親     FIFO   親
 プロセス間通信	
  -‐‑‒	
  パイプ

         if(	
  mkfifo(“myFifo”,	
  0666)	
  ==	
  -‐‑‒1){
make             perror(“mkfifo”);
                 }

         if(	
  (fd=open(“myfifo”,	
  O_̲WRONLY))	
  ==	
  -‐‑‒1){
open          perror(“open”);
              }

         if(	
  write(fd,	
  buf,	
  sizeof(buf)))==-‐‑‒1){
write!        perror(“write”);
              }
親    FIFO   親
 プロセス間通信	
  -‐‑‒	
  パイプ

        if(	
  (fd=open(“myfifo”,	
  O_̲RDONLY))	
  ==	
  -‐‑‒1){
open         perror(“open”);
             }

        if(	
  ret=	
  read(fd,	
  buf,	
  sizeof(buf)))==-‐‑‒1){
read!        perror(“write”);
             }
プロセス間通信	
  -‐‑‒	
  ソケット

    -‐‑‒	
  ネットワーク上でやり取り可能
    -‐‑‒	
  コードなし

          ソケット            ソケット




                    ネット
  親                 ワーク
                                 親

More Related Content

What's hot

Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
 
php7's ast
php7's astphp7's ast
php7's ast
do_aki
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
Rui Hirokawa
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)Shinichi Awamoto
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
シェル入門
シェル入門シェル入門
シェル入門
ina job
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
Kazuya Wada
 
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
digitalghost
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみた
firewood
 
OSS開発勉強会-10
OSS開発勉強会-10OSS開発勉強会-10
OSS開発勉強会-10
Kohei KaiGai
 
マスターオブゴールーチンアンドチャネル スタートGo #1
マスターオブゴールーチンアンドチャネル   スタートGo #1マスターオブゴールーチンアンドチャネル   スタートGo #1
マスターオブゴールーチンアンドチャネル スタートGo #1
Takuya Ueda
 

What's hot (20)

Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
 
php7's ast
php7's astphp7's ast
php7's ast
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
R3.0.0 is relased
R3.0.0 is relasedR3.0.0 is relased
R3.0.0 is relased
 
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
シェル入門
シェル入門シェル入門
シェル入門
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
速習A tour of go
速習A tour of go速習A tour of go
速習A tour of go
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみた
 
OSS開発勉強会-10
OSS開発勉強会-10OSS開発勉強会-10
OSS開発勉強会-10
 
マスターオブゴールーチンアンドチャネル スタートGo #1
マスターオブゴールーチンアンドチャネル   スタートGo #1マスターオブゴールーチンアンドチャネル   スタートGo #1
マスターオブゴールーチンアンドチャネル スタートGo #1
 
Nginx lua
Nginx luaNginx lua
Nginx lua
 

Similar to C-langage

ZFSのソースコードをチラ見してみる
ZFSのソースコードをチラ見してみるZFSのソースコードをチラ見してみる
ZFSのソースコードをチラ見してみるKoichi Suzuki
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
Rust使ってみた
Rust使ってみたRust使ってみた
Rust使ってみた
NipponAlgorithm
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
Jun Nogata
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
Tomoya Nakayama
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
Takaaki Hoyo
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Nobuhisa Koizumi
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
 
Okinawapm #1
Okinawapm #1Okinawapm #1
Okinawapm #1
Kei Kamikawa
 
プログラマ講習第3回
プログラマ講習第3回プログラマ講習第3回
プログラマ講習第3回Yuma Yoshimoto
 
Find(1)
Find(1)Find(1)
Find(1)
akitsukada
 
Yaminabe fortran
Yaminabe fortranYaminabe fortran
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
do_aki
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
 

Similar to C-langage (20)

Rの高速化
Rの高速化Rの高速化
Rの高速化
 
ZFSのソースコードをチラ見してみる
ZFSのソースコードをチラ見してみるZFSのソースコードをチラ見してみる
ZFSのソースコードをチラ見してみる
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
Rust使ってみた
Rust使ってみたRust使ってみた
Rust使ってみた
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
 
01 php7
01   php701   php7
01 php7
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
Scapy presentation
Scapy presentationScapy presentation
Scapy presentation
 
Okinawapm #1
Okinawapm #1Okinawapm #1
Okinawapm #1
 
プログラマ講習第3回
プログラマ講習第3回プログラマ講習第3回
プログラマ講習第3回
 
Find(1)
Find(1)Find(1)
Find(1)
 
Yaminabe fortran
Yaminabe fortranYaminabe fortran
Yaminabe fortran
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
 
0622
06220622
0622
 

More from Hiramatsu Ryosuke

iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahooiOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
Hiramatsu Ryosuke
 
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
Hiramatsu Ryosuke
 
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
Hiramatsu Ryosuke
 
iOSアプリ開発にほんのり役に立つtips集
iOSアプリ開発にほんのり役に立つtips集iOSアプリ開発にほんのり役に立つtips集
iOSアプリ開発にほんのり役に立つtips集
Hiramatsu Ryosuke
 
5分でつまむEffective Objective-C
5分でつまむEffective Objective-C5分でつまむEffective Objective-C
5分でつまむEffective Objective-C
Hiramatsu Ryosuke
 
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Hiramatsu Ryosuke
 
iOSアプリの特急申請 - Apple Expedited Review Request
iOSアプリの特急申請 - Apple Expedited Review RequestiOSアプリの特急申請 - Apple Expedited Review Request
iOSアプリの特急申請 - Apple Expedited Review Request
Hiramatsu Ryosuke
 
emoSound by たこ部 | OpenHackDay2
emoSound by たこ部 | OpenHackDay2emoSound by たこ部 | OpenHackDay2
emoSound by たこ部 | OpenHackDay2
Hiramatsu Ryosuke
 
AppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストにAppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストに
Hiramatsu Ryosuke
 
Bitbucket Pull Request 練習帳
Bitbucket Pull Request 練習帳Bitbucket Pull Request 練習帳
Bitbucket Pull Request 練習帳
Hiramatsu Ryosuke
 
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめiPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめHiramatsu Ryosuke
 

More from Hiramatsu Ryosuke (12)

iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahooiOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
 
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
 
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
 
iOSアプリ開発にほんのり役に立つtips集
iOSアプリ開発にほんのり役に立つtips集iOSアプリ開発にほんのり役に立つtips集
iOSアプリ開発にほんのり役に立つtips集
 
5分でつまむEffective Objective-C
5分でつまむEffective Objective-C5分でつまむEffective Objective-C
5分でつまむEffective Objective-C
 
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
 
iOSアプリの特急申請 - Apple Expedited Review Request
iOSアプリの特急申請 - Apple Expedited Review RequestiOSアプリの特急申請 - Apple Expedited Review Request
iOSアプリの特急申請 - Apple Expedited Review Request
 
emoSound by たこ部 | OpenHackDay2
emoSound by たこ部 | OpenHackDay2emoSound by たこ部 | OpenHackDay2
emoSound by たこ部 | OpenHackDay2
 
AppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストにAppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストに
 
Bitbucket Pull Request 練習帳
Bitbucket Pull Request 練習帳Bitbucket Pull Request 練習帳
Bitbucket Pull Request 練習帳
 
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめiPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
 
Unix
UnixUnix
Unix
 

Recently uploaded

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (16)

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

C-langage

  • 2. コンパイル⽅方法 1.  cc  chap1_̲1.c   →  a.out  が⽣生成される 2.  cc  chap1_̲1.c  -‐‑‒o  chap1_̲1 →  chap1_̲1  が⽣生成される
  • 3. 主なエラーメッセージ 1.  syntax  error -‐‑‒  スペルミスなどの⽂文法エラー 2.  undeclared -‐‑‒  宣⾔言されていない変数エラー 3.  parse  error -‐‑‒  {}抜けなどの構⽂文エラー
  • 4. intのあれこれ ・8進数⼊入れる場合は  x  =  0666 ・16進数⼊入れる場合は  x  =  0x6F15
  • 5. インクリメントの順番 ・x++ 式を評価してから,  xに1を⾜足す ・++x xに1を⾜足してから,  式を評価
  • 6. ビット演算⼦子 &  :  論論理理積   |  :  論論理理和 ^  :  排他的論論理理和 ~∼  :  ビットを反転させる <<  :  指定した数だけ左へシフト  (0埋め) >>  :  指定した数だけ右へシフト  (機種依存)
  • 7. 条件式 ・条件式  ?  式1  :  式2 成⽴立立→式1 不不成⽴立立→式2
  • 8. 配列列 int  x[30]; int  x[30]  =  {10,  20,  30,  328}; int  x[]  =  {10,  20,  30,  328}; int  x[]; ←Error!
  • 9. ⽂文字列列 char  name[20]; name[0]=ʼ’Sʼ’;  name[1]=”u”;  name[2]=..... char  name[20]  =  {ʻ‘Sʼ’,  ʻ‘uʼ’,  ʻ‘zʼ’,  ʻ‘uʼ’,  ʻ‘kʼ’,  ʻ‘iʼ’,  ʻ‘¥0ʼ’}; printf(“%s¥n”,  name); char  name[20]  =  “Suzuki”;  でも上と同様の効果 ⽂文字はシングルクォーテーション! ⽂文字列列はダブルクォーテーション!
  • 10. ⽂文字列列 scanf(“%d”,  x); scanf(“%s”,  str[0]); ⽂文字列列をscanfする場合、 先頭を指定すればOK.
  • 11. 2次元配列列 int  data[3][5]  ={  {3,4,8,6,4},  {6,4,2,2,0},  ...}; ⾏行行    列列 5列列 3⾏行行
  • 12. ポインタの役割 ①  配列列に添字を使わずアクセス!(古来) ②  ⽂文字列列を扱う! ③  関数の引⽤用として⽤用いる!
  • 13. ポインタの使い⽅方 int  *pa; pa  =  &a; a  のアドレスを⼊入れる printf(“%p¥n”,  pa); a  のアドレスを表⽰示 printf(“%d¥n”,  *pa); a  の値を表⽰示 *pa  +=  10; a  に10を⾜足す
  • 14. ファイルの⼊入出⼒力力  -‐‑‒  ファイルポインタ編 r    読み出し w    書き込み FILE  *fp; a    追加 r+  読み書き(新規作成なし) w+  読み書き(新規作成あり) fp  =  fopen(“file.txt”,  “r”); a+  読み書き(新規作成あり) if(  (fp  =  fopen(“file.txt”,  “r”))  ==  NULL  ){ /*  エラー処理理  */ }
  • 15. ファイルの⼊入出⼒力力  -‐‑‒  ⼊入⼒力力関数編 while(  (c=getc(fp))  !=  EOF  ) printf(“%c”,  c); while(  fscanf(fp,  “%s%d”,  city,  value)  !=  EOF  ) printf(“%s  -‐‑‒>  %d¥n”,  city,  value); 書式⽂文字の利利⽤用が可能!
  • 16. ファイルの⼊入出⼒力力  -‐‑‒  出⼒力力関数編 for(i=0;  name[i]  !=  (c=getc(fp))  !=  EOF  ) printf(“%c”,  c); fprintf(fp,  “%s%d”,  city,  value); 書式⽂文字の利利⽤用が可能!
  • 17. ⾼高度度なポインタ 1.  ⽂文字列列の配列列を持つ char  *配列列名[]  =  {“⽂文字列列1”,  “⽂文字列列2”,  ...  };
  • 18. ⾼高度度なポインタ 2.  ポインタのポインタ char  *p,  **dp; p  =&c; dp  =  &p; printf(“%p¥n”,  *dp); 変数C  のアドレスが表⽰示 printf(“%d¥n”,  **dp); 変数C  の中⾝身が表⽰示
  • 19. コマンドライン引数 int  main(int  argc,  char  *argv[]){ ..... ..... ..... return  0; }
  • 20. モジュール化プログラミング -‐‑‒  make  コマンド -‐‑‒  関数プロトタイプ宣⾔言 -‐‑‒  ヘッダファイル(.h) -‐‑‒  読み込む時は  #include  “header.h” -‐‑‒  extern  int  x;  //  外部変数 環境変数で指定されてる場合は、 #include  <stdio.h>
  • 21. メモリの管理理 Score  *p,  *top; if(  (p  =  (Score  *)malloc(sizeof(Score)  *  size)) ==NULL){ /*  領領域確保エラー  */ } top  =  p;  //先頭を覚えておいて… /*  pをほげほげ  */ free(top);  //開放!
  • 22. ⽂文字列列の配列列 -‐‑‒定義   char  *str[]  =  {“Hello”,  “Good-‐‑‒bye”,  “OK”}; -‐‑‒表⽰示    printf(“%s¥n”,  str[0]);  printf(“%s¥n”,  str[1]);  printf(“%s¥n”,  str[0]);
  • 23. システムコール カーネルの昨⽇日にアクセスする関数  (代表例例) SIGINT  :  端末からのインタラプト⽂文字 SIGALRM  :  alarmシステムコール SIGSEGV  :  不不正なメモリアクセス signal(SIGINT,  func); インタラプト⽂文字 func()  を呼び出し が⼊入⼒力力されたら
  • 24. fork() 実⾏行行中のプロセスを複製する 親 pid  =  fork(); fork() if(  pid  !=  0){ //  親プロセス }  else  {    //  ⼦子プロセス ⼦子 }
  • 25. wait()とexit() ⼦子の終了了を待つ wait() pid  =  fork(); 親 if(  pid  !=  0){ //  親プロセス exit() wait(&status);  //  ⼦子の終了了を待つ }  else  { ⼦子    //  ⼦子プロセス exit(status);  //  終了了を明⽰示 }
  • 26. exec(),  execvp() 他プログラムを実⾏行行 親 char  *argv[]  =  {“ls”,  “-‐‑‒a”,  NULL}; execvp(“ls”,  argv); execvp() コマンドのパス コマンドライン 引数を渡す 親
  • 27. プロセス間通信 -‐‑‒  パイプ -‐‑‒  FIFO特殊ファイル -‐‑‒  ソケット
  • 28. プロセス間通信  -‐‑‒  パイプ -‐‑‒  fd[0]  :  読み取り専⽤用 -‐‑‒  fd[1]  :  書き込み専⽤用 -‐‑‒  pipe(fd) fd[0] fd[0] 親 パイプ ⼦子 fd[0] fd[1]
  • 29. パ ⼦子 プロセス間通信  -‐‑‒  パイプ if(  pipe(fd)==  -‐‑‒1){ perror(“pipe”); } if(  (len=write(fd[1],  buf,  strlen(buf)+1))==NULL){ perror(“write”); } if(  (len=read(fd[0],  buf,  strlen(buf)))==NULL){ perror(“read”); }
  • 30. プロセス間通信  -‐‑‒  FIFO特殊 -‐‑‒  任意のプロセス間で通信可能 -‐‑‒  mknode(),  mkfifo() -‐‑‒  扱いはファイル操作と同じ 親 FIFO 親
  • 31. FIFO 親 プロセス間通信  -‐‑‒  パイプ if(  mkfifo(“myFifo”,  0666)  ==  -‐‑‒1){ make perror(“mkfifo”); } if(  (fd=open(“myfifo”,  O_̲WRONLY))  ==  -‐‑‒1){ open perror(“open”); } if(  write(fd,  buf,  sizeof(buf)))==-‐‑‒1){ write! perror(“write”); }
  • 32. FIFO 親 プロセス間通信  -‐‑‒  パイプ if(  (fd=open(“myfifo”,  O_̲RDONLY))  ==  -‐‑‒1){ open perror(“open”); } if(  ret=  read(fd,  buf,  sizeof(buf)))==-‐‑‒1){ read! perror(“write”); }
  • 33. プロセス間通信  -‐‑‒  ソケット -‐‑‒  ネットワーク上でやり取り可能 -‐‑‒  コードなし ソケット ソケット ネット 親 ワーク 親