このコードでの記号*と記号の意味は次のとおりです。&
#include<stdio.h>
main()
{
char *p;
p="hello";
printf("%s\n",*&*&p);
}
printf上記のプログラムでステートメントは何をしますか?具体的には*&*&pどういう意味ですか?
これらは:
*&*&
冗長であり、実際のプロジェクトでそのようなばかげたコードに遭遇することは決してありません。アンパサンドはのアドレスを取り、pアスタリスクは*それを逆参照して元のを生成しchar*ます。行ったり来たり...
それを次のように考えてください:
*(&(*(&p)))
余談ですが、の型なし署名はmain、の戻り型がint想定されなくなった最新のコンパイラではカットされません。
はprintf文字列を出力します。"hello"これ&は、がポインタのアドレスとそれaddressOfに続くアドレスを返す演算子であり、ポインタアドレスに格納されている値とそれに続く値を返す演算子であるためです*。valueOf
したがって、本質的に、ステートメントは次の*&*&pようになります
valueOf(addressOf(valueOf(addressOf(p))))
"hello"これは、実際の場所に格納されている文字列を返します。
これがお役に立てば幸いです。