私が理解しようとしているのは次のとおりです。
最初の質問 - 変数 char *mystring を宣言したとしましょう。*mystring と &mystring と mystring の違いは何ですか?
2番目の質問 -
char* str = "Hello!";
MessageBox(NULL,str,str,NULL);
この関数で引数として使用されている str をどのように解釈できますか : それはポインターのアドレスですか、それとも文字列のアドレスですか?
私が理解しようとしているのは次のとおりです。
最初の質問 - 変数 char *mystring を宣言したとしましょう。*mystring と &mystring と mystring の違いは何ですか?
2番目の質問 -
char* str = "Hello!";
MessageBox(NULL,str,str,NULL);
この関数で引数として使用されている str をどのように解釈できますか : それはポインターのアドレスですか、それとも文字列のアドレスですか?
これらの行の後:
int num;
int *pNum = #
pNum
のアドレスであるポインタの値です。num
*pNum
直接参照する逆参照ポインタですnum
。つまり、*pNum = 3;
代入3
しますnum
&pNum
ポインタ自体のアドレスを取得するために使用できますここで、タイプの引数を取る関数があるとconst char*
しましょうstrlen
。
char* str = "Hello!";
int len = strlen(str);
文字が格納されているメモリ (ちなみにこれは読み取り専用です) を指すchar
namedへのポインタを作成します。この文字のアドレスを関数に渡します。この関数は、 (ヌル終了文字)に達するまで続く文字のカウントを開始します。str
'H'
strlen(str)
strlen
'H'
'\0'
最初の質問 - 変数 char *mystring を宣言したとしましょう。*mystring と &mystring と mystring の違いは何ですか?
char *mystring = "Hello!"; と仮定しています。
*mystring
cahr
文字列の最初のHello!
、つまりH
.
&mystrimg
はポインタのアドレスですmystring
mystring
文字列の最初の要素へのポインタですHello!
この関数で引数として使用されている str をどのように解釈できますか : それはポインターのアドレスですか、それとも文字列のアドレスですか?
str
はポインタのアドレスではありませんが、関数に渡すと、指定された文字列の最初の要素へのポインタに減衰しますMessageBox
。