0
私の質問が適切かどうかわかりません。 コードがある場合は....アレイアドレスの操作
int a[2];
私は&a[0]%8==1
をチェックして、操作a[0]= (a[0] & ~7)
を行いたい場合は、やってこの有効な方法は何ですか?
私の質問が適切かどうかわかりません。 コードがある場合は....アレイアドレスの操作
int a[2];
私は&a[0]%8==1
をチェックして、操作a[0]= (a[0] & ~7)
を行いたい場合は、やってこの有効な方法は何ですか?
配列のアドレスを決定するのはあなたではなく、コンパイラ+ロード時に決定するのはコンパイラ+リンカです。配列の要素にのみ割り当てることはできません。
メモリを適切に配置する必要がある場合は、<stdlib.h>
のmalloc()
関数を使用します。 C言語標準では、malloc
によって返されたポインタが任意の型に対して適切に揃っていることが保証されています。任意のタイプの最小要件が8の場合、これは8バイトの位置合わせされたポインターになります。それでは、あなたがすべきことは次のとおりです。
#include <stdlib.h>
int main (void)
{
int *a;
a = malloc (2 * sizeof(*a));
if (a == NULL) { /* Handle out of memory. */ }
/* ... */
}
配列-の-INT int a[2];
で宣言されたが、非常に可能性の高い最速の動作をサポートアライメントを持っていますので、これは、実際にやり過ぎのビットです。なぜあなたは8バイトのアライメントを強制することが有利だろうと思いますか?
あなたは何をしようとしていますか? –
気象アドレスを見るにはmodで8 ....... modで始まらない場合は012 – user654761
アドレスを確認していますが、内容を調整しています。 –