【C】構造体における.と->の区別(+関数引数との関連)

 自分が初めてプログラム書いた時、.(ドット演算子)と->(アロー演算子)の区別があまりついておらず苦労しました。
 復習してみるととても単純でしたが……。
 当時ググったり本を探したりしていたときは、わかりやすい例文を見つけられなかったので、備忘も兼ねて自分で書くことにしました。

・説明
・.は、通常の構造体変数の要素にアクセスするときに使用します。
・->は、ポインタ変数として宣言した構造体変数の要素にアクセスするときに使用します。
・ポインタ変数として宣言された構造体変数hogeについて、hoge->fugaの型は構造体タグ名を宣言したときの型と同じです。
 (僕はint→int*になると最初思ってました。(バカ)
 したがって関数の引数にポインタ変数が指定されているときにhoge->fugaをいれたいときは、&をつけます。

あとは例文を見てください。

ソースコード

#include <stdio.h>
typedef struct{
    int year;
    int classno;
}CLASSNAME;

void hyoji(int *);
void hyojis(CLASSNAME *);

int main(void){
    CLASSNAME cn1;
    CLASSNAME *pcn;
    pcn = &cn1;
    
    cn1.year = 3;
    printf("①:%d\n", cn1.year);
    pcn->classno = 4;
    printf("②:%d\n", pcn->classno);
    
    printf("③:");
    hyoji(&cn1.year);
    printf("④:");
    hyoji(&pcn->classno);
    
    printf("⑤:");
    hyojis(pcn);
    printf("⑥:%d\n", pcn->classno);
}

void hyoji(int *year){
    *year = 5;
    printf("%d\n", *year);
}

void hyojis(CLASSNAME *stp){
    stp->classno = 6;
    printf("%d\n", stp->classno);
}

出力結果

①:3
②:4
③:5
④:5
⑤:6
⑥:6

・参考
C言語関連
異なる型の変数をまとめる
構造体の引数

はてな記法(今回はじめて使いました)
sue445.hatenablog.com

ブログを始める理由と記事の内容について

ブログが日記と違うのは不特定多数の誰かに向けて発信できることにあります。そのため「ブログを始めたい!」という思いには、不特定多数に発信したいという気持ちがほぼ確実に含まれているといえます。


 僕が発信したいのは仕事に関することです。まあ会社員なので話せないことは多いし、具体的な内容は定まっていないですが。


 僕がブログを書き始めようとした根底には不安があります。僕は新卒でSIerに入社しました。SIerは「インターネット」上で悪評が高い業界です。やれブラックだの衰退するだの、言われたい放題です。またSE(システムエンジニア)と聞くとすなわち長時間残業なブラック職種というイメージをされます。


 そう言われれば誰でも不安になりますね。今の自分、本当に大丈夫かということを、まずは発信していきたいと思います。