以下のコードが機能しない理由を理解しようとしています。関数へのポインタ参照をプッシュし、そのアドレスの値を他の新しい値に変更しようとしています。最初のポインタは新しい文字列を指しています。問題は、なぜこれはダブルポインタ引数でのみ動作するのですか?単一ポインタへの引数としてのポインタへの参照
#include <stdio.h>
char new_str[] = "This is a new string";
int change_ptr(char * str_ptr)
{
*str_ptr = new_str;
}
int main()
{
char * a_str = "Hello";
change_ptr(&a_str);
return 0;
}
'&a_str'のタイプがchar **'と '&a_str'パッシングされていない'です次の変数のアドレスを渡しています。 –
コンパイラのメッセージを読む –
1つは、 'change_ptr'関数でパラメータが' char ** 'であることを必要とするアドレスの('& ')です。 – t0mm13b