#解決したいこと
文字列の配列をポインタ変数yを用いて出力するプログラムを作っているのですが、下のプログラムで
printf("%s",*y);
でエラーが出るのはなぜですか?
yにはxのアドレスが入っているので、*を付けることでアドレスの中に入っているものが表示できるはずなのですが、なぜエラーになるのかが分かりません。
#該当のソースコード
C
1#include <stdio.h> 2 3char x[9] = "TERATAIL"; 4 5int main(void) 6{ 7 char* y; 8 y = x; 9 printf("*y=%s\n", *y); //'printf' : 書式文字列 '%s' には、型 'char *' の引数が必要ですが、可変個引数 1 は型 'int' です 10 return 0; 11} 12
また、上のプログラムは以下のように書き換えると正常に実行できます。
上のコードとの違いは、printfのyの部分の*がなくなったことです。
しかし、先ほども言いましたがyにはxのアドレスが入っているため、*が付いていない状態だとアドレス値しか表示できないはずです。(アドレス値を表示するためには下のコードの%sを%xもしくは%pに書き換える)
なぜ上がだめで下がOKなのですか?
C
1#include <stdio.h> 2 3char x[9] = "TERATAIL"; 4 5int main(void) 6{ 7 char* y; 8 y = x; 9 printf("*y=%s\n", y); 10 return 0; 11}
回答3件
あなたの回答
tips
プレビュー