2016-10-24 24 views
0

私はいくつかのことを練習するための簡単なコードを書いていますが、想定通りに動作していません。 私は楽しいために私のiPhoneでプログラミングしていますが、私は本当にうまくいくようなc/C++オフラインコンパイラと呼ばれるアプリを使用しています。C++ iPhoneコンパイラの問題

とにかく、数字を表示するプログラムを書いていて、数字が5桁未満の場合、空の各空白に星印が表示されます。次に、メモリアドレスを表示します。

私には2つの質問があります。まず、私がこれを実行すると星がなぜ表示されないのですか?次に、それを実行するたびに、メモリアドレスが異なります。これはコンパイラのせいか、iPhoneのメモリの仕組みのせいか?

ソースコード:

//c plus plus program 1 

#include <iostream> 
using namespace std; 

int main (void){ 

    for(int i=0; i<150;i+=30){ 

    cout.width(5); 
    cout.fill('*'); 

    cout<<i<< "="<<&i <<endl; 

    } 

    return 0; 
} 

答えて

0

iのアドレスは、あなたのプログラムを実行するたびに変化していることを普通です。私が知っているように、システムがどのようにメモリを使って動作するかが原因です。なぜあなたは毎回同じパートにあなたのプログラムを配置すると思いましたか? :-)

私はhttp://cpp.shであなたのコードを試してみましたが、星が示された。

****0=0xffcde9dc 
***30=0xffcde9dc 
***60=0xffcde9dc 
***90=0xffcde9dc 
**120=0xffcde9dc 

注意を、出力幅が決定されたときにすべての後の第二<<を考慮にかかっていなかったこと。まず問題を調べるためにまずコンパイルの問題かどうかを理解しておいてください。

int main (void) { 
    cout.width(5); 
    cout.fill('*'); 
    cout << 1 << endl; 
    cout << 2 << endl; 
} 

+0

私はVisual Studioでプログラムするたびに常に1つのアドレスから始まりそこから行くので、プログラムを実行するたびに同じアドレスにあります。それがWindows対Appleのものかどうかは分かりませんでした。または、デスクトップ対モバイルのこと。あるいは、コンパイラの違いだけでも。 – rgolden