Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
関数の引数が同じ型の場合、次のコードは明確に定義されており、移植可能ですか?
void foo(int* p, int size); void pass_on_args_by_pointer(int a, int b, int c) { foo(&a, 3); }
明確にするために: 'size' 引数には、配列 p の要素数を含める必要があります。したがって、3 つの int をすべて foo に渡したいと思います。
いいえ、これは移植性がなく、明確に定義されていません。コンパイラは、メモリ内の隣接する場所に関数パラメータを割り当てる必要はありません。実際、アドレスを取得していないため、パラメータbをメモリに配置する必要はまったくありません。スルーインcの境界を超えるアクセスは未定義の動作です。intpfoo
b
c
int
p
foo