のフォーマット指定子文字列で使用されるフォーマット指定子char*
の唯一の有効な引数タイプではありませんか?もしそうなら、私のプログラムでは、これらのそれぞれが と の両方の %s フォーマット指定子に対してまったく同じように機能するのはなぜですか?%s
scanf()
scanf()
printf()
scanf("%s",&list[i]);
scanf("%s",list[i]);
scanf("%s",&list[i][0]);
この前提から生じる次の混乱を解消していただければ幸いです。
1)&name[i]
タイプであるchar (*)[]
のに、なぜ機能&name[i][0]
するのですchar*
か?
2)の引数として渡すと、name[i]
分解/変換されますか?入力した各名前の最初の文字のアドレスであるを渡すのと同じですか?なぜそれが機能するのですか?char*
%s
&name[i][0]
#include<stdio.h>
#include<string.h>
int main(void)
{
char list[3][10];
int i;
printf("Enter the three names \n");
for(i=0;i<=2;i++)
scanf("%s",&list[i]); //Why this works?
//scanf("%s",list[i]); //Does it decompose into char* type?
//scanf("%s",&list[i][0]);
for(i=0;i<=2;i++)
printf("%s\n",list+i); //All of these printf() work as well
//printf("%s\n",list[i]);
//printf("%s\n",&list[i][0]);
}