2

私がこれを持っているとします

typedef struct{
  int n;
  double* x;
}array;

array a;
double* a_;

array b;
double* b_;

などは&a_-&a == &b_-&b、すべてのカップル配列/ double* に対してですか?

否定的な場合、これをどのように保証できますか?

4

4 に答える 4

4

特定の関係を持つ個別の変数のアドレスに依存することはできません。また、アドレスを異なる変数に有効に減算することはできません。

なぜこれが必要なのか (何をしようとしているのか) を明確にすることができれば、実際に役立つ可能性があります。

于 2013-03-01T16:10:07.613 に答える
1

いいえ、一部のコンパイラは「小さな」変数を大きな構造体\配列とは別の場所に配置します。

一緒に保つには、2 つの要素を結合する構造体を宣言します...

于 2013-03-01T16:12:55.310 に答える
1

コンパイラは、変数間にパディング バイトを自由に追加できます。一般に、それはデータの配置に依存します。

于 2013-03-01T16:11:05.083 に答える
0

コンパイラ依存だと思いますし、ローカル変数の順番は仕様上決まっていません。

#pragma packコンパイラによって最終的に追加されるパディング バイトを回避するために、これらのメンバーを でラップする構造体を作成しようとする場合があります。

于 2013-03-01T16:13:46.603 に答える