ポインタにによる値の表現と文字列の表現について
◎1------------------------------
#include<stdio.h>
int main(void)
{
char *pt="ABC";
printf("pt=%s\n",pt);
char dt[10]="ABCDE";
char *pp;
pp=dt;
printf("pp=%s\n",pp);
return 0;
}
--------------------------------------
◎2----------------------------------
#include<stdio.h>
int main(void)
{
char *pt="ABC";
printf("*pt=%s\n",*pt);
char dt[10]="ABCDE";
char *pp;
pp=dt;
printf("*pp=%s\n",*pp);
return 0;
}
-----------------------------------
◎3---------------------------------------
#include<stdio.h>
int main(void)
{
int ary[5]={111,222,333,444,-1};
int* pt=ary;
while(1){
printf("%d ",*pt);
++pt;
if(*pt==-1){
break;
}
}
puts("");
return 0;
}
-----------------------------------------------
以上3つのプログラムで、◎1はprintfで「*」が付いてなく、正常に実行出来ました。
◎2はprintfで「*」が付いてなく、エラーは出ませんが、文字列が表示されませんでした。
◎3は文字列ではなく値ですが、printfで「*」が付いていて正常に実行できます。
これは、値の場合は「*pt」とすることで、ptのアドレスに値を代入しているという事で、「printf("%d ",*pt);」で実行できたということですかね?
文字列の場合は、先頭のアドレスを渡すだけなので、「printf("pt=%s\n",pt);」のようにしてアドレスを参照しないとダメであるということですか?
◎2で「printf("*pt=%s\n",*pt);」としてしまうと、何が起きてしまうのかわかりません。
以上、教えていただけると嬉しいです。
お礼
そういう事だったんですか! ありがとうございました。