上記のプログラムをgccコンパイラ(www.codepad.org)で実行すると、出力が となり、システムコールが許可されない:SYS_socketcall このエラー/出力がなぜ発生するのか誰にも分かりませんか?私が観察したものポインタの割り当て問題
int main() {
int i=8;
int *p=&i;
printf("\n%d",*p);
*++p=2;
printf("\n%d",i);
printf("\n%d",*p);
printf("\n%d",*(&i+1));
return 0;
}
は、私がアクセス不能になっている私が実行した後* ++のp = 2; WHY?
正解ありがとう。 – hari
次のコードはうまく動作します メイン INT(){ INT I = 8; INT * P =&I; のprintf( "\ n%D"、* P); * ++ P = 2; // のprintf( "\ n% d "、i); printf(" \ n%d "、* p); // printf( "\ n%d"、*(&i+1)); return 0; } これは、問題が* ++ p = 2のために問題であることを意味します。割り当てられていないメモリにアクセスしていますが、問題はありません。* ++ p = 2 pは値2の場所を指します。混乱は、それが私の価値を変化させないのですか?私はなぜ不得手になるのですか? – sudhansu
私は配列ではありませんが、* ++ p = 2.iには4バイトしか割り当てられていないので、その値は変更されません.pは4バイト後の位置を指します.SOなぜアクセスできないのですか? – sudhansu