ポインタがどのように機能するかを理解したいので、この小さなプログラムを作成しました。まず、charを指すapポインタを作成します。
最初の質問はこの時点です。ポインタを作成する場合、その値はメモリアドレスです(非ポインタオブジェクトを指す場合)が、今回は私の例では「はは」です。なぜchar*でこのように機能するのですか?そして、どうすればcin >> pでそれに価値を加えることができますか?
2番目の質問は、aq charを作成したことです。これは、作成した時点での*pポインターの値を持っています。しかし、その値とアドレスも「h」ですが、なぜですか?このcharオブジェクトのメモリアドレスである必要があります。それは無意味です:D(mingw --gcc)
#include <iostream>
int main()
{
/* char *p;
cin >> p; //forexample: haha */
char * p = "haha";
char q = *p;
std::cout << "&q = " << &q << std::endl; //&q = h
std::cout << "q = " << q << std::endl; //q = h
return 0;
}
詳細:最初にchara[100]を使用してメモリを割り当てた場合。char * p = a; 次に&q = h»ŢĹなので、「h」といくつかの混乱。しかし、それはメモリアドレスでなければなりません!そして私の質問は、なぜそれがその時対処されないのかということです。