#include <stdio.h>
int main(int argc, char **argv) {
// your code goes here
char *p;
p = "hello";
printf("%s",*&*&p);
return 0;
}
p
,*&p
,*&*&p
の出力が同じです。これはどのように可能ですか?私のCコードはpのすべての入力に対して同じ出力を与えますか?
#include <stdio.h>
int main(int argc, char **argv) {
// your code goes here
char *p;
p = "hello";
printf("%s",*&*&p);
return 0;
}
p
,*&p
,*&*&p
の出力が同じです。これはどのように可能ですか?私のCコードはpのすべての入力に対して同じ出力を与えますか?
*
手段は「hello」という文字列を指すポインタであるPのアドレスの値になります。
&
は、このオブジェクトのメモリアドレスを示します。
したがって、
p
は、文字列hello
が始まるアドレスです。
*&p
は、pの場所にあるもの(つまり、hello
が始まるアドレス)を教えてください。
*&*&p
手段は、だから、すべてのそれらのあなたにp
を与える
P
の位置にある場所である何私を与えます。しかし、Pは値を格納することはできません、それはアドレスでなければなりません? –
したがって、 'p'に格納されたアドレスは' printf'に送られ、 'printf'はp = 20とprintf("%d ")を与えるときに' \ 0' – Riley
となるまでそのアドレスの文字の印字を開始します。 、* &*&p);これは正しく動作しません。 –
pは、文字列 "hello"を指すポインタです。 &のpは、pのアドレスである、だから、* & pは再びメモリ内のこの場所にあるものは何でも与え
ok then char p = "hello"; printf( "%s"、p);それはエラーを出力しますが、char * p; p = "hello"; printf( "%s"、p); hello –
を出力します。char pはpが文字列ではなく、文字であることを意味します。 char * pは、pが文字列へのポインタであることを意味します。理解のため、http://stackoverflow.com/a/2938924/4183255を参照してください。 –
それは視覚化した後には本当に役に立ちました。それは私が探していたものです。どうもありがとう。 :) –
代わりに何を期待していますか? –
pの値はどうやってこんにちは。 p店舗住所。 –
いくつか私はこのコードのステップバイステップの作業を説明することができますか? –