[読書メモ] 苦しんで覚えるC言語 その2

   · ☕ 3 min read
🏷️
  • #C
  • P.252

    文字列を記録する変数はいちども説明したことがありませんでした.
    その理由は簡単です。
    C言語には文字列を記憶する変数がないからです。 
    文字列用の変数がないのは、文字列が特殊な性質を持つためです。
    文字列は何文字になるのかが自分に予測できません。5文字程度で済むこともあれば、何千文字と言う文字数になることもあります.
    このように、場合によって必要とされるメモリのサイズが異なってくるのです。
    このような事情があるため、C言語には文字列用の変数がありません。
    

    P.261

    C言語では、もっと直感的に文字列を初期化できる方法があります。
    今まで文字列を表すときには" "で囲んで来ましたが、これを使う方法です。
    なお、" "で囲んだ文字列を特に、文字列リテラルと呼ぶことがあります。
    
    1
    2
    3
    4
    5
    6
    7
    
    #include <stdio.h>
    
    int main(void) {
        char str[] = "MARIO";
        printf("%s\n", str);
        return 0;
    }
    

    P.284 メモリ上の番号を表示する

    実は、変数につけられた番号は、プログラムで調べることができるのです。  
    番号を調べるのは意外に簡単で、printf関数で %p 指定子を使うだけです。
    ただし、変数名の前には、& をつける必要があります。
    次のプログラムは、int 型変数 i の番号を表示する例です。
    

    P.285

    変数につけられた番号のことを、アドレスと呼んでいます。
    

    P.287 配列の番号

    配列の場合には、先頭に& をつける必要はありません。
    ただし、配列の個々の要素は変数と同じ扱いなので、当然& をつけます。
    
    #include <stdio.h>
    
    int main(void) {
        int array[10];
        printf("array___(%p)\n", array);
        printf("array[0](%p)\n", &array[0]);
        printf("array[1](%p)\n", &array[1]);
        printf("array[2](%p)\n", &array[2]);
    }
    

    P.290 C言語では、あくまで値渡ししかできない
    P.293 ポインタという単語

    ポインタという単語は総称であり、正確には3種類に別れています。
    

    P.294 ポインタ型

    ポインタ型とは、アドレスを記憶する変数の型のことを意味しています。  
    

    P.295 ポインタ値

    ポインタ値とは、ポインタ型の変数が記憶できる数値のことですが、これは、要するに、変数のアドレス値のことです。
    

    P.296 ポインタ変数

    ポインタ変数とは、ポインタ型で宣言された実際の変数のことです。
    ポインタ変数の役目は、記憶しているアドレスのメモリを操作することです。
    言い換えると、普段はポインタ変数として振舞っているのですが、
    メモリ操作が必要なときには、普通の変数に変身する必要があるのです。  
    この変身機能こそが、ポインタ変数の最大の特徴となります。
    ポインタ変数は、ポインタ変数モードと通常編集モードの2モードを備えており、
    必要に応じて、それぞれを切り替えて使うことができるのです。
    
    Share on

    whasse
    WRITTEN BY
    whasse
    Web Developer