ちょっと悩んだプログラムネタ。C言語

typedef struct {
    int *b;
} S_TMP;

void fnc_a( const S_TMP *ptmp )
{
    S_TMP localtmp;

    localtmp = *ptmp;
    localtmp.b[0] = 10;
    localtmp.b[1] = 20;
    localtmp.b[2] = 30;
}

int main ()
{
    S_TMP tmp;
    int nList[3] = {0};

    tmp.b = nList;
    fnc_a(&tmp);

    printf ("%d, %d, %d", nList[0], nList[1], nList[2]);

    reutrn 0;
}

構造体の「*b」もとい、main関数のnListが追加要素だったわけだけど、
わざわざ関数呼び出しにconstを付けている構造体に、
値を返すようなもんを追加しないで欲しいと。
配列とポインタとconstを微妙に混同してるのに、
たまたま上手く動くコードになってる例。*1
実際のコードはこんなシンプルじゃないので結構悩んでたり。
普通に関数に引数追加に書き直し。

*1:constで宣言してても構造体の変数がポインタなら、ローカル変数への値コピーで、ポインタ先の値を変更できちゃうわけか。まぁ考えてみりゃある意味当然。最も書いた本人は、こんな事を意識してなかったそうな。