私は最近 C の学習を始めたばかりです。配列とポインターの概念を理解していたときに、それを理解する上でつまずきのブロックに遭遇しました。
このコードを検討してください -
#include<stdio.h>
int main()
{
char string[]="Hello";
char *ptr;
ptr=string;
puts(*ptr);
return(0);
}
コンパイルされますが、実行時にセグメンテーション違反が発生します。
私が得る警告は次のとおりです。
puts の引数 1 に型エラーがあります。'char' が見つかりました 'char へのポインタ' が必要です
*ptr は文字 "H" を返しますが、私の最初の印象は、入力として char を受け入れるだけだというものでした。
後で、 puts() は入力として文字配列へのポインターを期待していることを理解するようになりましたが、私の質問は、このようなものを渡すときです- puts("H"), puts(* と同じことではありませんか? ptr)、*ptr に文字 "H" が含まれている場合。