倩åœã«ãããèšèªå ¥éããããµæ§é äœ verïŒ.2126
ðððchar* p="abc";ãå®è¡ããã®ã¡ [ ]æŒç®åããã€ã³ã¿å€æ°pã«äœçšããäœè£œããé åå€æ°p[0]ã¯ãã€ã³ã¿å€æ°pã®æ ŒçŽããŠããã¢ãã¬ã¹ã®ã¡ã¢ãªã«æ ŒçŽãããŠããããŒã¿'a'ãè¡šããŸãã
ããã§ãã€ã³ã¿å€æ°ã䜿ã£ãŠæååããŒã¿ãã¡ã¢ãªã«æ ŒçŽãããšãã«äœ¿çšããã[ ]æŒç®åã«ã€ããŠåŠãã§ã¿ãŸãããã[ ]æŒç®åã¯é åã«ã䜿çšãããŠããŠæ¥µããŠéèŠãªåããããŠããŸã
ðððchar* p="abc";ãå®è¡ããã®ã¡ [ ]æŒç®åããã€ã³ã¿å€æ°pã«äœçšããäœè£œããé åå€æ°p[0]ã¯ãã€ã³ã¿å€æ°pã®æ ŒçŽããŠããã¢ãã¬ã¹ã®ã¡ã¢ãªã«æ ŒçŽãããŠããããŒã¿'a'ãè¡šããŸãã
ãã®ãšããœãŒãã¯Visual Studio2018ã«å¯Ÿå¿ããŠããŸã
Visual Studio2019ã«ã¯å¯Ÿå¿ããŠããŸãã
ãœãŒã©ãŒãä»æ¥ã¯[ ]æŒç®åã®ä»çµã¿ã«ã€ããŠããã¹ãŠã¿ããã
çšæã¯ããã§ãã~ã
ãœãŒã©ãŒã[ ]æŒç®åã¯subscript operatorïŒæ·»åæŒç®åïŒ
ãšãã°ããŠããŸããã
ã¢ã¬ãµããœãŒã©ãŒãã
[ ]æŒç®åã£ãŠã©ããã§ã¿ãããšã
ãããããªæ°ãããã®ã§ããã»ã»ã»ã»]
ãœãŒã©ãŒãããïŒ
ã¿ãããšãããïŒ
ãã£ãããªïœ
ãšãããã次ã®ããã°ã©ã ãã芧ãã ããã
#include <stdio.h>
int main(void) {
char* p = "abc";
printf("%c\n", p[0]);
printf("%c\n", p[1]);
printf("%c\n", p[2]);
printf("%c\n", p[3]);
printf("%s\n", p);
printf("%p\n", p);
return 0;
}
ã³ã³ãã€ã«çµæ
a
b
c
(空çœïŒ
00DA7BDC
abc
ãœãŒã©ãŒãããŠ
ãã®ããã°ã©ã ã§äœããããªãããŠããããããããªïŒ
char* p = "abc";
char* pã«ãã
ãã€ã³ã¿å€æ°pãçæãããã®ãããããŸãã
ã§ãã
ãªãã
ãã€ã³ã¿å€æ°ïœã
æååããŒã¿ "abc"ã«ãã£ãŠåæåãããŠããã»ã»ã»ã»ã»ïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒ
ãªããªãã§ïŒïŒïŒïŒïŒ
ãã€ã³ã¿å€æ°ã£ãŠã¢ãã¬ã¹ãæ ŒçŽããå€æ°ãªãã§ãããïŒ
æååããŒã¿ãæ ŒçŽã§ããã¯ãããªã
ã£ãŠæã£ãæ¹ãããããã®ã§ã¯ãªãã§ããïŒã
ã¢ã¬ãµãchar* p = "abc";
ã§ããã(ÂŽâœïœ*)
char* p = "abc";
ãå®è¡ããããš
æååããŒã¿ "abc"ã¯ã¡ã¢ãªã«æ ŒçŽãããŸãã
ãã®ãšã
æååããŒã¿ "abc"ãæ ŒçŽãããŠããã¡ã¢ãªã®å é ã®ã¢ãã¬ã¹ã
ãã€ã³ã¿å€æ°pã«æ ŒçŽãããŸã
printf("%p\n", p);
ã®å®è¡çµæã
00DA7BDC
ãšãªã£ãŠããããšãã
ãã€ã³ã¿å€æ°pã«æ ŒçŽãããŠããã¢ãã¬ã¹ã¯
00DA7BDC
ã§ããããšãããããŸãã
ãããŠ
æååããŒã¿ "abc"ãæ ŒçŽãããŠããã¡ã¢ãªã®å é ã®ã¢ãã¬ã¹ã
00DA7BDC
ã§ããããšãããããŸã(ÂŽâœïœ*)/ã
ãœãŒã©ãŒãã¯ã¯ãããªãã»ã©ã
ã€ãŸã
char* p = "abc";
ãå®è¡ããããš
äœè£œãããchar*åã®ãã€ã³ã¿å€æ°pã«
æååããŒã¿ "abc"ãæ ŒçŽãããŠããã¡ã¢ãªã®å é ã®ã¢ãã¬ã¹ã
ä»£å ¥ãããŠåæåãããŠãããã ãã
ãã€ã³ã¿å€æ°pã«
æååããŒã¿"abc"ãã®ãã®ãæ ŒçŽãããŠããããã§ã¯ãªããã ããã
ã¢ã¬ãµãã¯ãã£ããããªãã§ãã
char* p = "abc";
ãå®è¡ããããš
æååããŒã¿ "abc"ã¯
ã¢ãã¬ã¹00DA7BDCã®ã¢ãã¬ã¹ã®ä»ããã¡ã¢ãªãå é ãšããŠ
ã¡ã¢ãªã«æ ŒçŽãããŸãã
ãããŠ
pã®char*åã®ãã€ã³ã¿å€æ°å®£èšããããªããšåæã«
ãã€ã³ã¿å€æ°pã¯
ã¢ãã¬ã¹00DA7BDCãä»£å ¥ãããŠåæåãããŠããŸãã
æååããŒã¿ "abc"ã¯
ã¢ãã¬ã¹00DA7BDCã®ã¢ãã¬ã¹ã®ä»ããã¡ã¢ãªãå é ãšããŠ
é ã«ã¡ã¢ãªã«æ ŒçŽãããã®ã§ãã
å ·äœçã«ã¯
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯æåããŒã¿'a'
00DA7BDã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯æåããŒã¿'b'
00DA7BDEã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯æåããŒã¿'c'
00DA7BDFã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯æåããŒã¿'\0'
ã®ããã«
æååããŒã¿"abc"ã¯åå²ãããŠé çªã«ã¡ã¢ãªã«æ ŒçŽãããŠããŸãã
ãã®ãšã
char*åã®ãã€ã³ã¿å€æ°p
ã¯
ã¢ãã¬ã¹00DA7BDCãæ ŒçŽããŠãã
p
p+1
p+2
p+3
ã¯
ã¢ãã¬ã¹
00DA7BDC
00DA7BDD
00DA7BDE
00DA7BDF
ãæ ŒçŽããŠãããã€ã³ã¿å€æ°ãšãªããŸã
ã§ãã®ã§
*p
*(p+1)
*(p+2)
*(p+3)
ã¯
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'a'
00DA7BDã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'b'
00DA7BDEã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'c'
00DA7BDFã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'\0'
ãããããããšã«ãªããŸã
ãšããã§
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ã®ã¢ãã¬ã¹ãæ ŒçŽããŠãããã€ã³ã¿å€æ°ã¯
p
p+1
p+2
p+3
ã§ãããããšããã«ãŒã«ã§ãã
*p
*(p+1)
*(p+2)
*(p+3)
ã¯
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ãè¡šããŠããŸããã®ã§
*p
*(p+1)
*(p+2)
*(p+3)
ã
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'a'
00DA7BDã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'b'
00DA7BDEã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'c'
00DA7BDFã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'\0'
ãããããããšã«ãªããš
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ã¯
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'a'
00DA7BDã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'b'
00DA7BDEã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'c'
00DA7BDFã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'\0'
ãããããããšã«ãªããŸã
ããããããããããããããããããããããããããããã
char* p = "abc";
ãš
char p[4]="abc";
ã¯ãšãŠã䌌ãæ§é ãããŠãã
char p[4]="abc";
ãå®è¡ãããšãã«ã
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ã®ã¢ãã¬ã¹ãæ ŒçŽããŠãããã€ã³ã¿å€æ°ã¯
p
p+1
p+2
p+3
ãšãªã
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ã¯
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'a'
00DA7BDã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'b'
00DA7BDEã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'c'
00DA7BDFã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããæåããŒã¿'\0'
ã
ãããããŸããã§ãã®ð
ãã®ããšã«ã€ããŠã¯
ãœãŒã©ãŒãããåŸã»ã©
ãã1床詳ãã解説ãããŸãã
ãœãŒã©ãŒããšããããšã¯
ããããããããããchar p[4]="abc";
ã®ããã«
ããããããããããðé åã䜿ã£ãŠð
ããããããããããæååããŒã¿"abc"ã
ããããããããããæ ŒçŽããæ¹æ³ã®ä»ã«
ããããããããããchar* p="abc";
ã®ããã«
ããããããããããðãã€ã³ã¿å€æ°ã䜿ã£ãŠð
ããããããããããæååããŒã¿"abc"ã
ã
ãããããããããæ ŒçŽããæ¹æ³ããããã ã
ããããª
2éãã®æ¹æ³ããããã ããã
ã¢ã¬ãµãã¯ãã£ããããªãã§ãã®
ãšããã§
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯æåããŒã¿'a'
ãæ ŒçŽãããŠããã®ã§ãã
æåããŒã¿'a'ãprintfåºå衚瀺ããããšãã¯
printf("%c\n",*p);
ãå®è¡ããã°ããããšã«ãªãã®ã§ãã®ã
ãã®ããã°ã©ã ã¯æ¬¡ã®ããã«ãªããŸãã
#include <stdio.h>
int main(void) {
char *p = "abc";
printf("%c\n", p[0]);
printf("%c\n", p[1]);
printf("%c\n", p[2]);
printf("%c\n", p[3]);
printf("%s\n", p);//ðãã®ãã«ãå®è¡çµæã«æ³šç®ããŠãã ãã
printf("%c\n", *p);/*ããã§æåããŒã¿'a'ãprintfåºå衚瀺ããããšããŠããŸã*/
return 0;
}
ã³ã³ãã€ã«çµæ
a
b
c
(空çœïŒ
abc
aããðaã衚瀺ãããŸãã
ã¢ã¬ãµãprintf("%c\n", *p);
ããã€ã³ããªãã§ãã®ã
ãœãŒã©ãŒãã¯ã¯ãããã£ã(^_-)-â
ãŸã
printf("%c\n", *p);
ãå®è¡ãããå Žåã ã
ãã€ã³ã¿å€æ°pã¯
æååããŒã¿"abc"ãæ ŒçŽããŠããã¡ã¢ãªã®å é ã®ã¢ãã¬ã¹
00DA7BDCãæ ŒçŽããŠãã
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯
æåããŒã¿'a'ãæ ŒçŽãããŠããã®ã§
*pã¯ãã€ã³ã¿å€æ°pãæ ŒçŽããŠããã¢ãã¬ã¹00DA7BDCã®ä»ããã¡ã¢ãªã«
æ ŒçŽãããŠããããŒã¿
æåããŒã¿'a'ãè¡šãããšã«ãªããã ã
ã ãã
printf("%c\n",*p);
ãå®è¡ããããš
*pã«æ ŒçŽãããŠããæåããŒã¿'a'ãprintfåºå衚瀺ããããã ã
*pã«æ ŒçŽãããŠããæåããŒã¿'a'ãprintfåºå衚瀺ããã®ã«
æåãprintfåºå衚瀺ããã®ã«ã€ãããã
ãããããããããð%cåºåå€ææå®åð
ã䜿ãããŠããã®ãããããã
ããã«å¯Ÿã
printf("%s\n", p);
ã®å®è¡çµæãã芧ãã ãã
abcã«ãªã£ãŠããã
ãã€ã³ã¿å€æ°pã¯
æååããŒã¿"abc"ãæ ŒçŽããŠããã¡ã¢ãªã®å é ã®ã¢ãã¬ã¹
00DA7BDCãæ ŒçŽããŠãã
00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«ã¯
æåããŒã¿'a'ãæ ŒçŽãããŠããŸãã
ãã€ã³ã¿å€æ°pã¯
æååããŒã¿"abc"ãæ ŒçŽããŠããã¡ã¢ãªã®å é ã®ã¢ãã¬ã¹
ãæ ŒçŽããŠãã
æååããŒã¿"abc"ãæ ŒçŽããŠããã¡ã¢ãªå šäœã代衚ããã¢ãã¬ã¹ã§ããããŸã
ã§ãã®ã§
ãã€ã³ã¿å€æ°pã«
ããããããããð%såºåå€ææå®åð
ãäœçšããã
printf("%s\n", p);
ãå®è¡ãããš
abc
ã衚瀺ããããã ããã
ã¢ã¬ãµãã¯ãã£ããããªãã§ãã®ïŒŒ(^o^)ïŒ
ãœãŒã©ãŒãããããã³ã¿ããããããŸãã
ãœãŒã©ãŒããžãžãããïŒ
ã§ã¯
ãåŸ ããããããŸããã
次ã¯ãããã
æ·»åæŒç®å[ ]ã®èª¬æã ãã
#include <stdio.h>
int main(void) {
char* p = "abc";
printf("%c\n", p[0]);
printf("%c\n", p[1]);
printf("%c\n", p[2]);
printf("%c\n", p[3]);
printf("%s\n", p);
printf("%p\n", p);
return 0;
}
ã³ã³ãã€ã«çµæ
a
b
c
(空çœïŒ
00DA7BDC
abc
ãœãŒã©ãŒãä»
ãã€ã³ã¿å€æ°pã«ã¯ã¢ãã¬ã¹00DA7BDCãæ ŒçŽãããŠããŸã
ãã®ãšã
ãã€ã³ã¿å€æ°pã«
æ·»åæŒç®å[]
ãã€ããŠ
p[0]
p[1]
p[2]
p[3]
ãšããå Žå
p[0]ã¯00DA7BDCã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããŠãã
æåããŒã¿'a'ãè¡šãããšãã§ãããã ãã
ãããŠ
p[1]ã¯00DA7BDDã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããŠãã
æåããŒã¿'b'ãè¡šãããšãã§ã
p[2]ã¯00DA7BDEã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããŠãã
æåããŒã¿'c'ãè¡šãããšãã§ã
p[3]ã¯00DA7BDFã®ã¢ãã¬ã¹çªå·ã®ä»ããã¡ã¢ãªã«æ ŒçŽãããŠãã
æåããŒã¿'\0'ãè¡šãããšãã§ãããã ã
ãªã®ã§
printf("%c\n", p[0]);
printf("%c\n", p[1]);
printf("%c\n", p[2]);
printf("%c\n", p[3]);
ãå®è¡ããããš
ã³ã³ãã€ã«çµæ
a
b
c
(空çœïŒ
ã衚瀺ããããã ãã
ã€ãŸã
ããããããããããããchar p[4]="abc";
ã®ããã«
ãããããããé åã䜿ã£ãŠæååããŒã¿"abc"ãã¡ã¢ãªã«æ ŒçŽããŠããããã§ããªãã®ã«
ããããããããã ãchar* p = "abc";
ãå®è¡ããå Žåã§ã
p[0]
p[1]
p[2]
p[3]
ãçšããŠ
ã¡ã¢ãªã«æ ŒçŽãã
æåããŒã¿
'a'
'b'
'c'
'\0'
ã«ã¢ã¯ã»ã¹ã§ãããã ããã
ã¢ã¬ãµããœãŒã©ãŒãããã€ãŸã
char* p = "abc";
ãå®è¡ãããŠ
æååããŒã¿"abc"ãã¡ã¢ãªã«æ ŒçŽãããå Žå
æåããŒã¿'a'ã®æ ŒçŽãããã¡ã¢ãª
æåããŒã¿'b'ã®æ ŒçŽãããã¡ã¢ãª
æåããŒã¿'c'ã®æ ŒçŽãããã¡ã¢ãª
æåããŒã¿'\0'ã®æ ŒçŽãããã¡ã¢ãª
ã«
æ ŒçŽããã
æåããŒã¿'a'
æåããŒã¿'b'
æåããŒã¿'c'
æåããŒã¿'\0'
ã¯
ãã€ã³ã¿å€æ°pã«æ·»åæŒç®åãä»ãã
p[0]
p[1]
p[2]
p[3]
ãã€ãã£ãŠ
ããããããšãã§ãããšãããããªã®ã§ãããã
ãœãŒã©ãŒããããªãã ã
ãšããã§
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ã®ã¢ãã¬ã¹ãæ ŒçŽããŠãããã€ã³ã¿å€æ°ã¯
p
p+1
p+2
p+3
ãšãªã£ãŠããŸã
ã§ãã®ã§
*p
*(p+1)
*(p+2)
*(p+3)
ã¯
p[0]
p[1]
p[2]
p[3]
ã«æ ŒçŽãããŠããæåããŒã¿
'a'
'b'
'c'
'\0'
ãããããããšã«ãªããŸã
ã§ãã®ã§
printf("%c\n", p[0]);
printf("%c\n", p[1]);
printf("%c\n", p[2]);
printf("%c\n", p[3]);
ã®ä»£ããã«
printf("%c\n", *p);
printf("%c\n", *(p+1));
printf("%c\n", *(p+2));
printf("%c\n", *(p+3));
ãå®è¡ããŠã
ã³ãã³ãããã³ããç»é¢ã«
a
b
c
(空çœïŒ
ã衚瀺ãããããšã«ãªããŸãã
ãã®æã®ããã°ã©ã ã¯ãã¡ãã§ã
ð
#include <stdio.h>
int main(void) {
char *p = "abc";
printf("%c\n", p[0]);
printf("%c\n", p[1]);
printf("%c\n", p[2]);
printf("%c\n", p[3]);
printf("%c\n", *p);
printf("%c\n", *(p+1));
printf("%c\n", *(p+2));
printf("%c\n", *(p+3));
return 0;
}
ã³ã³ãã€ã«çµæ
a
b
c
(空çœïŒ
a
b
c
(空çœïŒ
ãœãŒã©ãŒã
ãããããããããããðé åpãçšããŠð
ããããããããã char p{4]="abc";
ããããããããããã
ãå®è¡ã
æååããŒã¿"abc"ãã¡ã¢ãªã«æ ŒçŽããå Žå
é åå€æ°
p[0]
p[1]
p[2]
p[3]
ã®ã¢ãã¬ã¹ãæ ŒçŽããŠãããã€ã³ã¿å€æ°ã¯
p
p+1
p+2
p+3
ãšãªããŸããã
åæ§ã«
ãããããããããðãã€ã³ã¿å€æ°pãçšããŠð
æååããŒã¿"abc"ãã¡ã¢ãªã«æ ŒçŽããå Žåã
p[0]
p[1]
p[2]
p[3]
ã®ã¢ãã¬ã¹ãæ ŒçŽããŠãããã€ã³ã¿å€æ°ã¯
p
p+1
p+2
p+3
ãšãªããã§ããã
æ°èŠç»é²ã§å å®ã®èªæžã
- ãã€ããŒãž
- èªæžã®ç¶æ³ããäœåãèªåã§åé¡ããŠç°¡åã«ç®¡çã§ãã
- å°èª¬ã®æªèªè©±æ°ãã²ãšç®ã§ãããååã®ç¶ãããèªãã
- ãã©ããŒãããŠãŒã¶ãŒã®æŽ»åãè¿œãã
- éç¥
- å°èª¬ã®æŽæ°ãäœè ã®æ°äœã®æ å ±ãåãåãã
- é²èŠ§å±¥æŽ
- 以åèªãã å°èª¬ãäžèŠ§ã§èŠã€ãããã
ã¢ã«ãŠã³ãããæã¡ã®æ¹ã¯ãã°ã€ã³
ãã¥ãŒã¯ãŒèšå®
æåãµã€ãº
èæ¯è²
ãã©ã³ã
çµã¿æ¹å
æ©èœããªã³ã«ãããšãç»é¢ã®äžéšãã¿ãããã床ã«èªåçã«ã¹ã¯ããŒã«ããŠèªã¿é²ããããŸãã
å¿æŽãããšå¿æŽã³ã¡ã³ããæžããŸã