ローカル変数が設定されていないときに「ランダムな」値を持つことができることは知っていますが、ローカル変数の最初の値をポインターで設定するのは悪いことですか? 例えば:
void setValue(int* p_val)
{
*p_val = …; /* Assignment does not use *p_val */
}
int main(void)
{
int val;
setValue(&val);
printf("%d", val);
return 0;
}
setValue は、参照される変数の値を設定するだけで、読み取ることはありません。Splint は、val が「定義の前に使用される」ことを警告します。私は、printf が実行されて val が使用される前に val の値が設定されると信じているため、その警告に少し驚いています。初期値を設定するために使用されている基準を認識できるほど、スプリントは十分に進んでいませんか?