ポインターを別の関数に渡し、その中のポインターで変更することにより、静的構造体オブジェクトを変更しようとしています。ただし、変更関数の実行後でも、構造体の値はそのままです。
void some_functon_a(....)
{
static struct some_struct obj;
modifier_function_b(&obj);
// obj is not modified as expected in fact not at all
}
void modifier_function_b(struct some_struct *ptr)
{
// modifying the struct using ptr
}
また、このコードで gdb を実行すると、コード フローが modifier_function_b() 関数に入るとすぐに、gdb が変数 ptr の 2 つのエントリ (ptr と ptr@entry) を報告することがわかります。すべての変更は ptr で行われますが、obj の実際の場所を指す ptr@entry は変更されません。誰かがここで何が起こっているのか指摘できますか? 静的変数へのポインターは const ポインターのようなもので、スコープ外で変更することはできませんか?
もう1つ...静的修飾子を削除すると、この動作は見られないため、静的へのポインターはconstポインターのようなものだと思いました。
前もって感謝します :)