ueh...@po.ntts.co.jpãã:
> ãCããã°ã©ã äžã«çŸããXåã®é
åå€ã¯ãXåãæããã€ã³ã¿å€ã«å€æãããã
> ãã®ãã€ã³ã¿å€ã®å®éã®å€ã¯ãã®é
åã®å
é èŠçŽ ãæãããã®æã«é
åã®å€
> ã倿Žãããããã§ã¯ãªããã
ãªãã»ã©ããããªããããããªæ°ãããŸãã
> 以äžãé€ãç¶æ³ã§ãã
> ã»sizeofæŒç®(é
åã®ã€ã³ããã¯ã¹èšç®ã®ãããªæé»ã®sizeofæŒç®ãå«ã)ã®å¯Ÿè±¡ã
> ã»&æŒç®ã®å¯Ÿè±¡ã
ç§ã¯ãå€ãã«å¯Ÿããsizeofã&ã¯ã©ã®ã¿ã¡äžå¯èœã ãããããããé€
ããã¯èšããŸã§ããªããšæã£ãŠããŸããã
> ãã ãäŸå€ã¯é¢æ°ã®ä»®åŒæ°å®£èšã«ãããäžæ¬¡å
ç®ã®é
åã®å®£èšã§ãã
> ã¯ãããªãæå³ã§ããã€ã³ã¿ãšåãã«ãªããŸãã
ãã£ã±ããããå°è±¡åŒ·ããã§ããããŒã
> ããã¯éããŸããããçè§£ãã¹ãã§ã¯ãªãã§ããaèªäœã¯é
ååã§ã
> ããåŒäžã«çŸããèå¥åaã®åç
§ã«ããã(int*)ãšãããã€ã³ã¿å€ã
> ãçãããã®ã§ãã
ã ã£ãŠCèšèªã§(宣èšã¯å¥ãšããŠ)åŒäžã«çŸãããªãaã¯ååšããªãã§ãã?
> ãã®ããã«çè§£ããããšã®å©ç¹ã¯ãã颿°åãã颿°ãã€ã³ã¿åãã®
> ä»çµã¿ãšåæ§ã«çè§£ã§ãããšããããšã§ãããCããã¹ãäžã«çŸãã
> 颿°åã¯æé»ã®ãã¡ã«é¢æ°ãã€ã³ã¿å€ã«å€æããããããããã
ãªãã»ã©ããã£ã¡ãåç¹ãªãã§ããã
> void func(){}
> void (*funcp)();
> ã®æã«funcp=funcãfuncp=&funcãfunc()ãfuncp()ãåæ§ã«æ£åœãªã®ã§ãã
> ããããã¯ANSI C/C++çãªçè§£ã§ãã£ãŠK&Rã¯å¯Ÿè±¡å€ã§ã:)ã
> ãããšãã颿°åãšé¢æ°ãã€ã³ã¿åã¯åãåã§ãã? ãããŸãå¥ã«
> åãã§ãããã®ãâŠã
ã»ãŒããŒããŒãè¶£å³ã®åé¡ãããã
> int * const aã§ãã:P?
ããããç¥ããŸãããããã«åæå€ãèšå®ãããŠã(ãã©ã¹é åã®ç¢º
ä¿)ã ããšæã£ãŠäžéœåããããŸãã?
> ããã§ãããåçŽã«ãåããã ãšæã£ãŠããŸããš
> x.c:
> int a[100];
> x.h:
> extern int* a;
> ãªããŠãããã¡ãã¡ã³ãŒããæžããŠããŸãå±éºããããŸãã
ãã®å®£èšäžã®åé¡ã¯æ©ãŸããã§ããããã§ãäžã®ã¯å®æ°ãäžã®ã¯å€æ°
ã ãããã¡ãšãã説æãå¯èœã§ããã
> > P.S. ã§ãåãåã§ãã :-) (ã©ã£ãã§èãããããªã»ãªã)
> éãã£ãŠèšãã®ã«ã
åã¯åãã§ããã®èšæ¶é åã®å²ãåœããæ¹ãšãã¯åãšã¯å¥ã®åé¡ã ã
ããåã¯åãã ãšèããããšã¯å¥ã«å·®ãæ¯ããªãããšãŸã èããŠããŸãã
次ã®èª¬åŸãåŸ ã¡ããŠãŸã :-) ä¹ é
ãã¶ãã¶ã ãŒãã®ãšããïŒâãŠãœïŒæšªåãããç³ãèš³ãªãã®ã§ããã
ueh...@po.ntts.co.jp wrote:
> In article <6ncoim$m...@utogw.gssm.otsuka.tsukuba.ac.jp> ku...@gssm.otsuka.tsukuba.ac.jp writes:
> > > Cã§ã¯Xåã®é
åã¯ãXåãžã®ãã€ã³ã¿ã«å€æãããã
> >
> > > Cã§ã¯Xåã®é
åã¯ãXåãžã®ãã€ã³ã¿ã«å€æããããããã«
> > > äž¡è
ã¯ããã€ãã®ç¶æ³ã§åçã«æ±ãããšãã§ããã
> >
> > ãããããXåã®é
åããã倿ããããšèšããšãé
åã®äžã®å€ãŸã§
> > æäœããããã®ãããªå°è±¡ããããŸããã§ãã? ãŸãããããã€ãã®ç¶
>
> ããããæ³¥çžåŒã«ããããŸãã
>
> ãCããã°ã©ã äžã«çŸããXåã®é
åå€ã¯ãXåãæããã€ã³ã¿å€ã«å€æãããã
> ãã®ãã€ã³ã¿å€ã®å®éã®å€ã¯ãã®é
åã®å
é èŠçŽ ãæãããã®æã«é
åã®å€
> ã倿Žãããããã§ã¯ãªããã
ãã€ã³ã¿å€ãšèšããããšãã©ãããŠããã€ã³ã¿ãšãããã¢ãã¬ã¹ã®ãããã®ãã
æãæµ®ããã§ããŸãã®ã§ã
ãCã®ããã°ã©ã ã®äžã«çŸããXåã®é
å倿°ã¯ã
Xåã®é
åãæ ŒçŽãããŠããã¡ã¢ãªã®å
é ã¢ãã¬ã¹ãšè§£éãããŸããã
ãšããã®ã¯ã©ãã§ããããïŒ åæ§ã«ãã€ã³ã¿ã¯ã
ãCã®ããã°ã©ã ã®äžã«çŸããXåãžã®ãã€ã³ã¿ã¯ã
Xåã®ããŒã¿ãæ ŒçŽãããŠããã¡ã¢ãªã®ã¢ãã¬ã¹ãšè§£éãããŸããã
ãšããããšã«ãªããŸããã»ã»ã»ã
--
ãããã
ïŒåŽã£ãŠããããããªã£ãã ããããã
ãã¢ã»ã³ãã©ã¬ãã«ã§èããã°ãåãã ãšæããŸãã
ãCèšèªã®ããå æžãªæã¯ãäŸãã°ãchar codeããšããåŒæ°ã颿°ã«äžããã°ã
ãcodeãã®å€ã®ã³ããŒãã¹ã¿ãã¯ã«ç©ãŸããŠãµãã«ãŒãã³ãåŒã°ããã®ã«ã
ãchar code_buf[100]ããšãšããåŒæ°ã颿°ã«äžãŠããcode_buf[100]ãã®
å
容ã®ã³ããŒãã¹ã¿ãã¯ã«ç©ãŸããã®ã§ã¯ãªããå®éã«ã¹ã¿ãã¯ã«ç©ãŸãã
ã®ã¯é
åã®å
é ã¢ãã¬ã¹ã(char *)&code_buf[0]ãã§ãããããããæå³ã§ã¯
åŒæ°ã®åããchar *code_bufããšããå Žåãšäœçå€ãããŸããããæ§é äœã
å
±çšäœã®å Žåãåæ§ã§ãã
ãã¹ã¿ãã¯ã«å€ãç©ããšé¢æ°å
ã§åŒæ°ã倿ŽããŠãã倿Žãããã®ã¯ã¹ã¿ã
ã¯äžã«äžæçã«äœæãããå€ã®ã³ããŒã§å
ã®å®äœã¯å€æŽãããŸããããé
å
ãžã®ãã€ã³ã¿ãç©ãŸããå Žåããã®ãã€ã³ã¿ãåç
§ããŠé
åã®å
容ã倿Žãã
ãšãé
åã®å
容ãçŽæ¥å€æŽãããŸãã
ããããã£ãæå³ã§ãã char buf[100]ããšã£ã衚èšã¯ä»ã®ããŒã¿åã®æ±ããšã
äžè²«æ§ããªããçŽãããã衚çŸãªã®ã§ç§ã¯äœ¿ããªãããã«ããŠããŸãã
ããã£ãšããäœã§ãã¹ã¿ãã¯ã«ç©ãŸããã®ã¯ããã¯ããã§å°ãç©ã§ããã6502
ãªããŠããã£ã256ãã€ãããã¹ã¿ãã¯é åãªããããªãã
ããŸãã以äžã®ãããã®å®£èšã«ã€ããŠããã¢ã»ã³ãã©ã¬ãã«(ãªã³ã«ãåç
§ãã
OBJãã¡ã€ã«å
ã®æ
å ±)ã§ã¿ãã°åæ§ã«æ±ãããŠããŸããŸãã
(1) extern int a[100];
(2) extern int a[];
(3) extern int *a;
ãæ¬æ¥ãextern int a[100];ããšå®£èšããå Žåãèšèªã¬ãã«ã§ã¯é
åã®æå¹ãª
èŠçŽ ç¯å²ã®ãã§ãã¯ãããŠãããŠãããããã§ãããCèšèªã§ã¯ã§ããŸããã
ãçŽæ¥ãa[101]ããšããå Žåãªãã³ã³ãã€ã«æã«ãã§ãã¯å¯èœã§ããããã
ãa[n]ããããã¯ãa[x*10+y]ããšãã£ãå¯å€å€ã«ããã€ã³ããã¯ã¹ã§ã¯ã
é
åã®ããŒã¿åã倿ŽããŠãããŒã¿å
ã«èŠçŽ æ°ãå«ããŠããããããã°ã©ã
ãã€ã³ã¿ããªã¿ã«ããªãéãç¡çã ãšæããŸãã
+---------------------------------------------------------------------+
| From : Dairyo Gokan ( åŸç¥ å€§éµ ) |
| Organization : Studio NAND Co., Ltd. ( ã¹ã¿ãžãªã»ãã³ãæéäŒç€Ÿ ) |
| Adrs : 39-6-102, Nishi-Kameari 3 Katsushika-ku Tokyo, 125-0002 JPN |
| ã125-0002 æ±äº¬éœè食åºè¥¿äºæ3äžç®39çª6å·ããŒã«ãã¯ã€ã102 |
| TEL:03-3838-0850 FAX:03-3838-0875 mailto:na...@can.bekkoame.ne.jp |
+---------------------------------------------------------------------+
å匷äžã§ïŒãäºäººã®èšäºãé¢çœãèªãŸããŠè²°ã£ãŠããŸãã
äžåããã®é
åãšãã€ã³ã¿ã®é¢ä¿ã®èª¬æã¯ïŒïŒ£èšèªé¢ä¿ã®æžç±ã§ãèŠããããªãŒãœ
ããã¯ã¹ãªè§£éã ãšæããŸããä¹
éããã¯ïŒãããªããšã¯çŸãæ¿ç¥ã§äžã®ãããªããš
ãèšã£ãŠãããããšæããŸããïŒè©±ã«ã€ããŠè¡ãã®ã«ã¡ãã£ãšãå°ããããããšãã
ããŸãã
ããã¯ïŒããã§è©±é¡ã«äžãã£ãŠããåã«ã€ããŠã§ããïŒåã®å®çŸ©ãšåãåäžïŒåãïŒ
ãšã¯äžäœã©ãããå Žåãæãã®ããšããããšã§ãã
ãããïŒèªåã«ãšã£ãŠã¯ã£ããããªãããïŒèšäºã®å
容ãèªåã®äžã§æ··ä¹±ãã¯ãããŠ
ããŸãã
é¢åã§ãªããã°ïŒã¡ãã£ãšèª¬æããŠé ãããæãé£ãã§ããã
> ããŸãã以äžã®ãããã®å®£èšã«ã€ããŠããã¢ã»ã³ãã©ã¬ãã«(ãªã³ã«ãåç
§ãã
> OBJãã¡ã€ã«å
ã®æ
å ±)ã§ã¿ãã°åæ§ã«æ±ãããŠããŸããŸãã
>
> (1) extern int a[100];
> (2) extern int a[];
> (3) extern int *a;
æ¬åœããª.
$ cat foo.c
int a[1];
$ cat bar.c
extern int a[]; /* ! */
main ()
{
printf ("%d\n", a[0]);
}
$ cc -o a.out foo.c bar.c
$ ./a.out
0
$ cat baz.c
extern int *a; /* ! */
main ()
{
printf ("%d\n", a[0]);
}
$ cc -o a.out foo.c baz.c
$ ./a.out
Segmentation fault (core dumped)
ããã? :-)
# éãåã ã£ãŠããã ãææãããŠãã®ã«ãªã.
--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp
[12],(6,8),0,0,2
(976/11574/24211)
koun...@naruto-u.ac.jpãã:
> ããã¯,ããã§è©±é¡ã«äžãã£ãŠããåã«ã€ããŠã§ãã,åã®å®çŸ©ãšåã
> åäž(åã)ãšã¯äžäœã©ãããå Žåãæãã®ããšããããšã§ãã
ã¯ããç§ã¯ãåãšã¯ãã®åã«å¯ŸããŠæœããæäœã®éåããã³ãã®æäœ
ãè¡ããµããŸãã®å
šäœã«èå¥å¯èœãªåå(ã·ã°ããã£?)ãã€ãããã®ã
ãšèããŸãããããŠä»åã®å Žåã¯ãint *p; ã®pã int a[100]; ã®aã
(int*)ãšããå
±éã®ååãæã¡ãåŸã£ãŠåäžã®åã ãšèããããã§ãã
äžã®å®çŸ©ã§åããããã«ãç§ã¯åã«ã€ããŠèãããšãå³èŸºå€ãšããŠã®ãµ
ããŸãããèããŠãŸããã®ã§ãããã§äžåãããšã®ç«å Žã®å·®ãçŸããã
ã®ã ãšæããŸãã
ããã§ããããã§ãã? ä¹ é
ç§:
> ã¯ããç§ã¯ãåãšã¯ãã®åã«å¯ŸããŠæœããæäœã®éåããã³ãã®æäœ
ããã®åãæã€å€ãã§ããã
> ãè¡ããµããŸãã®å
šäœã«èå¥å¯èœãªåå(ã·ã°ããã£?)ãã€ãããã®ã
> ãšèããŸãããããŠä»åã®å Žåã¯ãint *p; ã®pã int a[100]; ã®aã
> (int*)ãšããå
±éã®ååãæã¡ãåŸã£ãŠåäžã®åã ãšèããããã§ãã
> äžã®å®çŸ©ã§åããããã«ãç§ã¯åã«ã€ããŠèãããšãå³èŸºå€ãšããŠã®ãµ
> ããŸãããèããŠãŸããã®ã§ãããã§äžåãããšã®ç«å Žã®å·®ãçŸããã
> ã®ã ãšæããŸãã
ã©ããããŸããã ä¹ é
ã©ããæãé£ãããããŸãããããïŒã¡ãã£ãšç§ã«ã¯å
容ãé£ããããã§ïŒã©ã®
éšåã眮ãæãããè¯ãã®ããããåãããªãã£ãã®ã§ããïŒäžã®ãããªæ
ãã§è¯ãã®ã§ããããã
ãåãšã¯ãã®åãæã€å€ã«å¯ŸããŠæœããæäœã®éåããã³ãã®æäœãè¡ã
ãµããŸãã®å
šäœã«èå¥å¯èœãªååãã€ãããã®ãã
ã§ïŒããã ãšããŠäŸãã°int a[100] å ŽåïŒãã®åãæã€å€ãšã¯aã®å€ã®ããšã
æãã®ã§ããããããããŠæœããæäœã®éåãšã¯ïŒ&aãšãsizeof(a)ã¿ãããª
ãã®ãæãã®ã§ããããããã®æäœãè¡ãªããµããŸãã®å
šäœã«è³ã£ãŠã¯ïŒäœ
ãæãã®ãæããæµ®ãã³ãŸãããïŒãã¶ãïŒãã³ãã³ã«ã³ãã³ã®è§£éã ãšæ
ããŸãããïŒ
ãã£ãã説æããŠé ããã®ã«äœãåãããªããŠãããŸããã
koun...@naruto-u.ac.jpãã:
> ã©ããæãé£ãããããŸãããããïŒã¡ãã£ãšç§ã«ã¯å
容ãé£ããããã§ïŒã©ã®
> éšåã眮ãæãããè¯ãã®ããããåãããªãã£ãã®ã§ããïŒäžã®ãããªæ
> ãã§è¯ãã®ã§ããããã
> ãåãšã¯ãã®åãæã€å€ã«å¯ŸããŠæœããæäœã®éåããã³ãã®æäœã
> è¡ããµããŸãã®å
šäœã«èå¥å¯èœãªååãã€ãããã®ãã
ããã§ããã
> ã§ïŒããã ãšããŠäŸãã°int a[100] å ŽåïŒãã®åãæã€å€ãšã¯aã®å€
> ã®ããšãæãã®ã§ããããã
ã¯ãããaããšããåŒã衚ãå€ããšããæ¹ãæ£ç¢ºã§ãããã
> ãããŠæœããæäœã®éåãšã¯ïŒ&aãšãsizeof(a)ã¿ãããªãã®ãæã
> ã®ã§ããããã
Cã§ã¯&aã¯èš±ãããŠããŸããããŸãsizeof(a)ã¯aãšããåŒã衚ãå€ã«
察ããæŒç®ã§ã¯ãªããaãšããååã®é
åã®å€§ããã衚ã宿°ã§ããã
> ãã®æäœãè¡ãªããµããŸãã®å
šäœã«è³ã£ãŠã¯ïŒäœãæãã®ãæããæµ®
> ãã³ãŸãããïŒãã¶ãïŒãã³ãã³ã«ã³ãã³ã®è§£éã ãšæããŸãããïŒ
a[10] ãšãã®ããšã§ãããã¡ãããã㯠*(a+10)ãšç䟡ã§ãããã
a+10ãšããæäœã§ããã®æå³ãããã®ã®ãµããŸããšããã®ã¯ãa+10ãšã
ãã®ã¯aã®ã¢ãã¬ã¹ããaã®æãèŠçŽ åã®å€§ãã10åã¶ãå
ã®èŠçŽ ãæå³
ããŠããŸãããããã®èŠçŽ ã®ãµããŸã(倿°ãšããŠãµããŸã)ããšããã
ãšããªãçµæ§é£ããã§ããã
> ãã£ãã説æããŠé ããã®ã«äœãåãããªããŠãããŸããã
ããããã説æãã ãºã«ã·ããŠãããŸãã ä¹ é
In article <6nfveg$i...@utogw.gssm.otsuka.tsukuba.ac.jp>
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> Cã§ã¯&aã¯èš±ãããŠããŸããã
èš±ãããªãã€ãã§ã«.
ä¹
éããã®èãæ¹ã ãšäŸãã°ã¡ã¢ãªããããã¬ãžã¹ã¿ã (reg_t *) 0x10 ãã
é£ç¶ããŠãããšããŠ,
((reg_t []) 0x10) [REGn]; -(a)
ãšãã£ããã£ã¹ãã acceptable ãªã®ã§ãããã (ãã¡ããçŸè¡ã® C ã§ã¯é§
ç®ã§ããã©). å€å, ãã®å Žåãã¡ããã©
((reg_t * const) 0x10) [REGn]; -(b)
ãšå¯Ÿå¿ããä¹
éããã®èãæ¹ã ãšæãã®ã§ãã, 誀解ããŠããŸãã? ã€ãŸã,
éåžžã®é
å int a[N]; ãªã©ãšããã®ã¯ãªã³ã«ã a ã 0x10 ãªããªããªãã®å®
æ°ã«çœ®ãæããã ãã§, ãã®å®ã¯ (a) ã§ãã, (b) ã§ãããš.
ãã£ãšåã¿ç ããŠèšããš int *a; ã®æã€å±æ§ã¯ (int *) ãšããéšåãšå€æ°ã§
ãããšããéšåãšã«åããŠèããããšãã§ããŠ, 倿°ã宿°ãã¯éãããã©ã
(int *) ãšãã屿§ã¯ç䟡ã§ãããš.
# ã€ãŸãå¥èšäºã§ç§ã瀺ããäŸã§ã¯â倿°ãšå®æ°ãšã®ã¢ã¯ã»ã¹æ¹æ³ã®éãâã
# 瀺ããã«éããªã :-)
ãããšä»åºŠã¯ (reg_t []) ã®èŠçŽ æ°ã屿§ãšããŠæã€åãæãä»ããŸãã. é¢
æ°åŒæ°ã®äºæ¬¡å
以éãã¡ããã©ããã«åœãããª.
--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp
[12],(6,8),0,0,2
(1003/11912/24981)
so...@sra.co.jpãã:
> ããã£ãŠã説æã«ãªã£ãŠãªããšæããŸãã
ããã§ããã
> int a[100];
> int *b;
> ã§ã
> &a ã®å: (int (*)[100])
> &b ã®å: (int **)
> ãšããéãã¯ãã©ã説æããã®ã§ãããïŒ
ããŒãããŸããã&a ã£ãŠä»ã®Cèšèªã§æžãããã§ãããããæžããã®
ãªããç§ã®ç¥ã£ãŠããCããå€ãã£ãŠãã®ã§ã䞻匵ããã¹ãŠåãæ¶ããŠ
ä¿®è¡ããªãããŸãã ^_^;
> ãããä¹
éãããšåã説æãããŠãã C èšèªã®æç§æžãèŠãããæ±º
> ããŠããã®æç§æžã人ã«å§ããããšã¯ãªããšæããŸãã(ããããã
> ããæ¬ã¯ãå°ã£ãããšã«ãçµæ§ãããã§ããã©ãã)
ãã¡ãããèªåã®èãã«ãã£ãæ¬ãå§ããããšã¯åœç¶ã ãšæããŸãã
ã§ã&aã£ãŠãã€ããæžããããã«??? ä¹ é
doh...@hf.rim.or.jpãã:
> ä¹
éããã®èãæ¹ã ãšäŸãã°ã¡ã¢ãªããããã¬ãžã¹ã¿ã (reg_t *)
> 0x10 ãã é£ç¶ããŠãããšããŠ,
ããããâŠ
> ((reg_t []) 0x10) [REGn]; -(a)
> ãšãã£ããã£ã¹ãã acceptable ãªã®ã§ãããã (ãã¡ããçŸè¡ã® C
> ã§ã¯é§ç®ã§ããã©). å€å, ãã®å Žåãã¡ããã©
Cã®ãã£ã¹ãã¯åãšé¢ä¿ãªãã§ãã¡ãããŸãããããã£ã¹ãããåŸäœ
ãã§ããããšããã®ã¯åã·ã¹ãã ã®è«æ ã«ãªããªããšæããã§ãã
> ((reg_t * const) 0x10) [REGn]; -(b)
> ãšå¯Ÿå¿ããä¹
éããã®èãæ¹ã ãšæãã®ã§ãã, 誀解ããŠããŸãã? ã€ãŸã,
> éåžžã®é
å int a[N]; ãªã©ãšããã®ã¯ãªã³ã«ã a ã 0x10 ãªããªããªãã®å®
> æ°ã«çœ®ãæããã ãã§, ãã®å®ã¯ (a) ã§ãã, (b) ã§ãããš.
ãããŸãããããªããšèããããšã¯ãªãã£ããªãã§ããã€ãŸããã以
äžã¯ããã§ããæ°ãããŸãã
> ãã£ãšåã¿ç ããŠèšããš int *a; ã®æã€å±æ§ã¯ (int *) ãšããéšåãšå€æ°ã§
> ãããšããéšåãšã«åããŠèããããšãã§ããŠ, 倿°ã宿°ãã¯éãããã©ã
> (int *) ãšãã屿§ã¯ç䟡ã§ãããš.
ãããããããç§ãæã£ãŠãã®ã¯ããããããšã§ãã
> # ã€ãŸãå¥èšäºã§ç§ã瀺ããäŸã§ã¯â倿°ãšå®æ°ãšã®ã¢ã¯ã»ã¹æ¹æ³ã®éãâã
> # 瀺ããã«éããªã :-)
> ãããšä»åºŠã¯ (reg_t []) ã®èŠçŽ æ°ã屿§ãšããŠæã€åãæãä»ããŸãã. é¢
> æ°åŒæ°ã®äºæ¬¡å
以éãã¡ããã©ããã«åœãããª.
ããããâŠ ä¹ é
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> > ããã§ãããåçŽã«ãåããã ãšæã£ãŠããŸããš
> > x.c:
> > int a[100];
> > x.h:
> > extern int* a;
> > ãªããŠãããã¡ãã¡ã³ãŒããæžããŠããŸãå±éºããããŸãã
>
> ãã®å®£èšäžã®åé¡ã¯æ©ãŸããã§ããããã§ãäžã®ã¯å®æ°ãäžã®ã¯å€æ°
> ã ãããã¡ãšãã説æãå¯èœã§ããã
ããã£ãŠã説æã«ãªã£ãŠãªããšæããŸãã
> > > P.S. ã§ãåãåã§ãã :-) (ã©ã£ãã§èãããããªã»ãªã)
>
> > éãã£ãŠèšãã®ã«ã
>
> åã¯åãã§ããã®èšæ¶é åã®å²ãåœããæ¹ãšãã¯åãšã¯å¥ã®åé¡ã ã
> ããåã¯åãã ãšèããããšã¯å¥ã«å·®ãæ¯ããªãããšãŸã èããŠããŸãã
int a[100];
int *b;
ã§ã
&a ã®å: (int (*)[100])
&b ã®å: (int **)
ãšããéãã¯ãã©ã説æããã®ã§ãããïŒ
ããã a ã®åã (int *) ãªãã&a ã¯ãåœç¶ (int **) ã«ãªãã®ã§ã¯ïŒ
a ãš b ã®åã®éããçè§£ããŠããªããšãC èšèªã§å€æ¬¡å
é
åãæ±ãæã«ã
決ããŠæ£ããçè§£ã«è³ããªããšæããŸãã
ãããä¹
éãããšåã説æãããŠãã C èšèªã®æç§æžãèŠãããæ±ºããŠãã
ã®æç§æžã人ã«å§ããããšã¯ãªããšæããŸãã(ãããããããæ¬ã¯ãå°ã£ã
ããšã«ãçµæ§ãããã§ããã©ãã)
--
so...@sra.co.jpããSoftware Research Associates, Inc.ãæœç°å²ä¹ (Soda Noriyuki)
ãgccãå®éã«ã©ã®ãããªåã³ãŒããåºåããŠãããèŠãŠã¿ãªããšå€æã§ããŸ
ãããããããããint *aã宣èšã«å¯ŸããŠããa[0]ããæ£åžžã«æ±ããŠããªã
ããã§ãããã ãbaz.cãã以äžã®ããã«æžãæããã°åããšæããŸãã
extern int *a; /* ! */
main ()
{
printf ("%d¥n", *a);
ãæã¯æžããªãã£ãã®ãã©ããç¥ããŸããããDOSçã®ãMicrosoft Cã
ã§ã¯ã倿°é
åãäŸ:int a[100];ãã«å¯ŸããŠã&aããšæžããšããšã©ãŒ
ã¬ãã«äžããŠããšãé
åã«&ã¯ãããžãããç¡èŠããã§ïœ(ããªãæèš³)ã
ã¿ãããªã¯ãŒãã³ã°åºããŸããããšã©ãŒã«ã¯ãªããŸããããçµæãšããŠ
ã¯ã&a[0]ããšåæ§ã«ã¿ãªãããŸãã
ããã€ã³ã¿å倿°ãäŸ:int *b;ãã®å€æ°ã®æ ŒçŽã¢ãã¬ã¹ãååŸãããã
ã«ã&bããšæžãã®ã¯ãšã©ãŒã§ããªãã§ããªããšæããŸãã
ãææ°ããæãèŽããŸãã
ku...@gssm.otsuka.tsukuba.ac.jp wrote in message
<6nfveg$i...@utogw.gssm.otsuka.tsukuba.ac.jp>...
>ä¹
éã§ãã
>> ãåãšã¯ãã®åãæã€å€ã«å¯ŸããŠæœããæäœã®éåããã³ãã®æäœã
>> è¡ããµããŸãã®å
šäœã«èå¥å¯èœãªååãã€ãããã®ãã
>
> ããã§ããã
>
>> ãããŠæœããæäœã®éåãšã¯ïŒ&aãšãsizeof(a)ã¿ãããªãã®ãæã
>> ã®ã§ããããã
>
> Cã§ã¯&aã¯èš±ãããŠããŸããããŸãsizeof(a)ã¯aãšããåŒã衚ãå€ã«
>察ããæŒç®ã§ã¯ãªããaãšããååã®é
åã®å€§ããã衚ã宿°ã§ããã
>
ããã§ãããç§ã®äœ¿çšããŠããgccã§ã¯ïŒ&aãš&a[0]ã¯ã³ã³ãã€ã«ãéãïŒåã
å€ãæãã®ã§ïŒããã®ããªãšä»ãŸã§æã£ãŠããŸããããšããã§ïŒsizeofã¯æŒç®å
ã§ã¯ãªãã®ã§ãããããã«ïŒããã³ã®ããã°ã©ã èšèªïŒ£ã®æŒç®åã®äžèŠ§è¡šã®
äžã«ããã®ã§ïŒä»ãŸã§ã¯æŒç®åãšæã£ãŠããã®ã§ããã
>> ãã®æäœãè¡ãªããµããŸãã®å
šäœã«è³ã£ãŠã¯ïŒäœãæãã®ãæããæµ®
>> ãã³ãŸãããïŒãã¶ãïŒãã³ãã³ã«ã³ãã³ã®è§£éã ãšæããŸãããïŒ
>
> a[10] ãšãã®ããšã§ãããã¡ãããã㯠*(a+10)ãšç䟡ã§ãããã
>a+10ãšããæäœã§ããã®æå³ãããã®ã®ãµããŸããšããã®ã¯ãa+10ãšã
>ãã®ã¯aã®ã¢ãã¬ã¹ããaã®æãèŠçŽ åã®å€§ãã10åã¶ãå
ã®èŠçŽ ãæå³
>ããŠããŸãããããã®èŠçŽ ã®ãµããŸã(倿°ãšããŠãµããŸã)ããšããã
>ãšããªãçµæ§é£ããã§ããã
>
ãªããšãªãïŒåãããŸãããã§ãïŒåã®å®çŸ©ãäžã®ããã ãšããŠæäœãšãæäœ
ãè¡ãªããµããŸããšããïŒã³ã³ãã€ã©ãéããšããæ¡ä»¶ãã€ããã®ã§ããã°ïŒ
äŸãã° int a[10] ã§ããã°ïŒæäœãè¡ããµããŸãã®å
šäœãšã¯a[0]ãã a[9]
ã«ãªããšæããŸããäžæ¹ïŒïœïœïœ *pã®å Žåã¯p[0]ããp[n]ãŸã§å¯èœã§ãµããŸã
å
šäœã®å€§ãããç°ãªãããšã«ãªããšæããŸããã§ïŒåã®å®çŸ©ããç°ãªãåãš
ããããšã«ãªããããªæ°ãããŸããã©ãïŒããããè§£éãããªãã®ããªãïŒã
ç¹å®ã®èŠçŽ æ°ããã£ãé
åãããªããŠé
åå
šäœã®ãµããŸããšæ¯èŒããã®ã
ãªãããããªãïŒåããããªæ°ããããã©ãã§ãïŒæäœã®éåã§a++ãšãp++
ãèŠçŽ ãšããŠèªãããããªãïŒæäœã®éåã®å€§ãããç°ãªãããïŒ
ãªãããã£ã±ãïŒåºæ¬ãåãã£ãŠããªãããé£ããã§ããã
>
>Cã®ä»æ§ã§ã¯ãa[-1]ã§ãa[100]ã§ããã£ããã«æ§ããŸããã
>(å®è¡æãšã©ãŒãã§ãã«ã®Purifyãšã䜿ã£ãŠãªãã§ããã)ã
>
ã¯ãïŒåéãã§ãã®éãã§ãããªããã®æïŒé
åã®ç¯å²å€ãåç
§ãããšãïŒãšã©ãŒ
ã¡ãã»ãŒãžãèŠããããªèšæ¶ããã£ãã®ã§ïŒããæã蟌ãã§ããŸããã
ïŒããã¯ïŒïŒ£ãããªããŠïŒ¶ïŒ¢ã®æã ã£ãã®ããªïŒïŒ
> >ïŒããããè§£éãããªãã®ããªãïŒã
> > ç¹å®ã®èŠçŽ æ°ããã£ãé
åãããªããŠé
åå
šäœã®ãµããŸããšæ¯èŒããã®ã
> > ãªãããããªãïŒåããããªæ°ããããã©ãã§ãïŒæäœã®éåã§a++ãšãp++
> > ãèŠçŽ ãšããŠèªãããããªãïŒæäœã®éåã®å€§ãããç°ãªãããïŒ
>
>ããã¯int *const aã«å¯ŸããŠã§ããªãã®ãšåãçç±ããã§ããŸãã
>(ãšä¹
éããã¯èšããšæããŸã)ã
>
ãã®ïŒããã¯ããããæå³ã§æžããã®ã§ã¯ãªãïŒïŒ£èšèªã§èŠå®ãããŠããå
šãŠã®
æäœã«å¯ŸããŠïŒint a[10]ãšint *pãšããåããã£ããšããŠïŒãã®åã«æœããæäœ
ã®éåãèããå ŽåïŒa++ã¯æäœãšããŠæœããªããã©ïŒp++ã¯æäœãšããŠæœãã
ã®ã§ïŒæäœã®éåãšããŠaã®ãã€éåãšpã®ãã€éåã®å€§ããã¯éãã®ã§ã¯ïŒãš
ããæå³ãªãã§ãããïŒãããïŒãªããå€ãªè§£éïŒïŒ
na...@can.bekkoame.ne.jpãã:
> ãæã¯æžããªãã£ãã®ãã©ããç¥ããŸããããDOSçã®ãMicrosoft Cã
> ã§ã¯ã倿°é
åãäŸ:int a[100];ãã«å¯ŸããŠã&aããšæžããšããšã©ãŒ
> ã¬ãã«äžããŠããšãé
åã«&ã¯ãããžãããç¡èŠããã§ïœ(ããªãæèš³)ã
> ã¿ãããªã¯ãŒãã³ã°åºããŸããããšã©ãŒã«ã¯ãªããŸããããçµæãšããŠ
> ã¯ã&a[0]ããšåæ§ã«ã¿ãªãããŸãã
ãããã³ã³ãã€ã©ãã²ã©ãããèšèªä»æ§ãæ¹å€ããŠããããã
> ããã€ã³ã¿å倿°ãäŸ:int *b;ãã®å€æ°ã®æ ŒçŽã¢ãã¬ã¹ãååŸãããã
> ã«ã&bããšæžãã®ã¯ãšã©ãŒã§ããªãã§ããªããšæããŸãã
ããã¯åœç¶ã ä¹ é
koun...@naruto-u.ac.jpãã:
> ãã®ïŒããã¯ããããæå³ã§æžããã®ã§ã¯ãªãïŒïŒ£èšèªã§èŠå®ãããŠ
> ããå
šãŠã®æäœã«å¯ŸããŠïŒint a[10]ãšint *pãšããåããã£ããšã
> ãŠïŒãã®åã«æœããæäœã®éåãèããå ŽåïŒa++ã¯æäœãšããŠæœã
> ãªããã©ïŒp++ã¯æäœãšããŠæœããã®ã§ïŒæäœã®éåãšããŠaã®ãã€é
> åãšpã®ãã€éåã®å€§ããã¯éãã®ã§ã¯ïŒãšããæå³ãªãã§ããã
> ïŒãããïŒãªããå€ãªè§£éïŒïŒ
ã§ããã®çç±ã¯ãaããšããåŒã宿°åŒã ããããšããã®ãç§ã®è§£é
ãªãã§ããã©ãäžåããã®èšäºã«ãæžããŸãããã宿°ãã©ãããšãã
ã®ãåã®äžéšã§ãããšãèããªãããã¯ããã§çµæ§ãªãã§ããéã«èšã
ã°ãäœãåãã¯ãããšããŠãaãšpãšãã衚èšã®éãã¯å®æ°ãããã§ãªã
ãã®éãã ãã ãšæãã®ã§ãããããããç§ã¯(宿°ãã©ããã¯åã®äž
éšã§ãªããšèããŠãããã)ãåãåã ããšè¡šçŸããŠãããŸãã
ããã§&aã¯èŠæ Œäžèš±ãããã®? ä¹ é
P.S. æ¢ã«æžããŠããéãã&aãèŠæ Œäžèš±ãããã®ãªãaã¯å®æ°ã§ãªãã
ãåŒã£ãã¿ãŸãã
ueh...@po.ntts.co.jpãã:
> ä¹
éããã®åŸ¡æèŠã¯çè§£ããŸãããçµå±ãããèšèªã«å¯ŸããŠããã®èšèªã®æå³
> è§£éãå®è¡ã¢ãã«ã®çè§£ãšããã®ã¯å®ã¯äžéãã§ã¯ãªããããšãå®è£
ãã©ãåŠ
> çããŠããããšãããšãèšèªã®èšèšè
ãã©ãæå³ããŠããããšããããã¯èšèª
> 仿§ãã©ãèŠå®ããŠããããšã(!)ãããæå³èªç±ãªããã§ãã
ã§ããããããANSI Cã®èšèªä»æ§ã§ã¯åã«ã€ããŠã©ããããµãã«èª¬æ
ããŠããã§ãã? ãããèå³ãããŸãã
> ã§ããã£ã±ããé åãšãã€ã³ã¿ã¯éãåã§ã^^;
ã¯ãã¯ããçµæ§ã§ãã
> 宿°ãæäœã§ãããã宿°ã®çµæãè¿ãæäœã ãšèšã£ãŠãè¯ããããŸãã³ã³ã
> ã€ã«æã«è¡ããããå®è¡æã«è¡ããããã§åºå¥ããã®ãããããã§ãããã£ãš
> èšãã°å®£èšã ã£ãŠ(ã³ã³ãã€ã«æã®å€åé§äœ(äœã ?)ã«å¯Ÿãã)æäœã ãšèšããŸãã
宿°æ§/倿°æ§(?)ãåã®äžéšã ãšããããšã§ããããããã¯å¥ã«çµæ§
ãªãã§ãã£ãŠãç§ã¯å®æ°æ§/倿°æ§(?)ãšåã¯çŽäº€ããŠããšæãã®ãèªç¶
ã ãšèããããã§ããã ããC++ã®constãå«ããšãããâŠ
> &ã«ã€ããŠã¯ãä»®ã«&aãã§ããªããšããããæ§é äœã«&ãã§ããã®ã«åæ§ã®éæ
> äœã§ããé
åã«ã§ããªãã®ã¯äžèªç¶ã ããããçç±ã«æäœã§ã¯ãªããšããã®ãã
> ã¡ãã£ãšå«ã§ã(ãªããªããäžå¯èœãªæäœããšããŠæŠå¿µçã«ååšãããã)ã
ã§ãèšèªä»æ§ã§ã¯&aã¯ã§ããã®ã§ãããã§ããªãã®ã§ãã?
> ã ãããCã§ã¯é
åã®å°äœã¯äžåœã«è²¶ããããŠãã®ã§ãããã
> åŒæ°ã«æž¡ããããŸãããšä»£å
¥ãã§ããªããã
ãã®éããããã¯Cã®èšèšãã¹(äžèŠãã£ããããã©å®ã¯å€±æ)ã ãšæ
ããŸãããã®ãããã§ç§ã¯ããããŠçæ§ãšè«äºããã°ãªããªãã :-)
> ã¡ãªã¿ã«èŠæ Œè§£éã®è©±ã§ã¯ã&ã®å¯Ÿè±¡ã¯
>
> ANSI C仿§ 3.3.3.2 Address and indirection operators
> Constraints
> The operand of the unary & operator shall be either a function designator
> or an lvalue that designates an object that is not a bit-field and is not
> declared with the register storage-class specifier.
>
> ãªã®ã§ãéããããã£ãŒã«ãã§ã¯ãªãregister宣èšãããŠããªããªããžã§ã¯ãã
> æå®ããŠããlvalueãªãããã®ã§ãããã§array typeãlvalueã?ãšããã°
>
> ANSI C仿§ 3.2.2.1 Lvalues and function designators
> An lvalue is an expression (with an object type or an incomplete type
> other than void ) that designates an object.
>
> é
åã¯ãªããžã§ã¯ããªã®ã§(^o^)ãlvalueã§ãã
> #K&Rã¯ç¥ããŸãã
ããã &a ã¯èšèªä»æ§äžèš±ãããããšããããšã§ãã? ä¹ é
P.S. ããããªãã§aãš&aã®äž¡æ¹ã®æžãæ¹ãèš±ããããã ? æ¬åœã«ANSI C
ããããèš±ãã®ãªã倱æãç¹ãããšããŠã©ã€ãŒã«ã¯ãŸã£ãŠãããš
ããæ°ãããŸãã
ku...@gssm.otsuka.tsukuba.ac.jp writes:
|ä¹
éã§ãã
|na...@can.bekkoame.ne.jpãã:
|> ãæã¯æžããªãã£ãã®ãã©ããç¥ããŸããããDOSçã®ãMicrosoft Cã
|> ã§ã¯ã倿°é
åãäŸ:int a[100];ãã«å¯ŸããŠã&aããšæžããšããšã©ãŒ
|> ã¬ãã«äžããŠããšãé
åã«&ã¯ãããžãããç¡èŠããã§ïœ(ããªãæèš³)ã
|> ã¿ãããªã¯ãŒãã³ã°åºããŸããããšã©ãŒã«ã¯ãªããŸããããçµæãšããŠ
|> ã¯ã&a[0]ããšåæ§ã«ã¿ãªãããŸãã
|
| ãããã³ã³ãã€ã©ãã²ã©ãããèšèªä»æ§ãæ¹å€ããŠããããã
ããŒãïŒé
·ããªããšã¯ããããŸãããïŒèšæ¶ã«ããã°pccã®é ãã
ããã ã£ããããªæ°ãããŸãïŒå°ãªããšãANSI以åã«ã¯ã§ããªãC
ã³ã³ãã€ã©ã¯ãªãã£ãããããªãããªïŒ
>ANSI C仿§ 3.3.3.2 Address and indirection operators
> Constraints
> The operand of the unary & operator shall be either a function designator
> or an lvalue that designates an object that is not a bit-field and is not
> declared with the register storage-class specifier.
>
>ANSI C仿§ 3.2.2.1 Lvalues and function designators
> An lvalue is an expression (with an object type or an incomplete type
> other than void ) that designates an object.
>
>é
åã¯ãªããžã§ã¯ããªã®ã§(^o^)ãlvalueã§ãã
ANSI C仿§ 3.2.2.1 ã§ã¯ïŒ
巊蟺å€ïŒ lvalue ïŒã¯ãªãã·ã§ã¯ããæã瀺ãåŒïŒ ãªãã·ã§ã¯ãååã¯void以å€ã®
äžå®å
šåãæã£ããïŒã§ããããšããããšã«ãªããšæããŸããïŒintãa[10]ã®ãããª
å Žåã®aã巊蟺å€ãšããããã©ãããåé¡ã§ããïŒããã¯äžåããã®æç²ã®äž
ã ãã§ã¯ã¯ã£ãããšæå®ã§ããªãããã§ããïŒwith an object type or an
incomplete
type other than void ãæç¢ºã§ãªããããªã®ãšïŒããã忬ããã®åã®åé¡ãšå
ããã®ãæããšèããŠãé
åã¯å«ãŸããŠããªããããªæ°ãããããã§ããïŒ
以äžã¯ïŒåæ¬ããã®èšäºã®æç²ã§ãã
------------------------------------------------------------------
ã¹ã«ã©å:
ç®è¡å, ãã€ã³ã¿å
éæäœå:
é
åäœå, æ§é äœå (å
±çšäœåã¯éæäœåã§ã¯ãªã)
ãªããžã§ã¯ãå:
ã¹ã«ã©å, éæäœå, å
±çšäœå
äžå®å
šå:
倧ããã®åãããªãé
åå, å
容ã®åãããªãæ§é äœåãŸãã¯å
±çšäœå
-------------------------------------------------------------------
ã§ãããïŒïŒãïŒéæäœåã®äžã®é
åäœåã£ãŠé
ååã®ããšãªãã§ããïŒãã ã£ãã
é
ååã¯å·ŠèŸºå€ã«ãªãã®ããªïŒïŒ
ANSI C仿§ã®äžã«ã¯ã£ãããšé
åã¯å·ŠèŸºå€ãšæžãããŠãªãéã&ïœã¯èŠæ Œäžèš±ãã
ãªãããšã«ãªããŸãããªããŠãã³ã³ãã€ã«å¯èœãšããããšãªãïŒæé»ã®äºè§£ãšããã
ãšã«
ãªãã®ã§ããããã
ã§ïŒæ¬é¡ã®åãªãã§ããïŒããŸãŸã§ã®ãããããªäººã®èšäºãèªãã§ïŒããããæã£ã
ããšã¯ïŒïŒ£èšèªã«ãããåãšã¯èå¥åã«å¯Ÿããå¯èœãªæäœïŒïŒ£ã§èŠå®ãããåŒïŒæŒç®
åïŒã®çš®é¡åã³ãã®æäœã®æåãå®å
šã«æ±ºå®ã¥ãããã®ãšè§£éããŸãããã€ãŸãïŒ
èå¥åã«å¯Ÿããæäœã«é¢ããŠã¯ïŒåãæ±ºãŸãã°ããšã¯äœãå¿
èŠãªããšããããšã§ãã
ãããïŒä¹
éããã®è§£éã§ã¯ïŒèå¥åã«å¯Ÿããæäœã«ã€ããŠã¯åãšããšäœãã®ãã®ã
ã€ãå ããªããšå®å
šã«æ±ºå®ããããšã¯ã§ããªãã®ã§ã¯ãšæããŸãã
èªåãäœããšãã§ããªãééã£ãè§£éãããŠããªãã®ãã©ããææããŠé ãããã«
é·ã
ãšåæãªè§£éãæžãããŠé ããŸããã
so...@sra.co.jp
> ããããå€ã C ã§ãã(int (*)[100]) ãå¿
èŠãªããšã¯ãããŸããã
> ã®å Žåã&a ãšæžããªãã³ã³ãã€ã©ã§ã¯ã(int (*)[100])a ã®ãããª
> ãã£ã¹ããå¿
èŠã§ãããåé¡ããã£ãã®ã¯å€ãã³ã³ãã€ã©ã®æ¹ã§ããã
> ANSI C ã§ã¯ãããŸããã
ããããªãã»ã©ãããããåãããŸããããã®ãã£ã¹ãã¯æ±ãã§ãã
ããã€ãŸãK&Rã®Cã¯é
ååãšããã®ãæãããã«æžãŸãããšããã®ã§ã
ãã1次å
ã¯ãããšããŠã2次å
以äžã«ãªã£ããšãããã®2次å
ç®ä»¥éã®
倧ãããä¿æããã¹ãåæ
å ±ããªããšããåé¡ã«ééããããã§ããã
ããã§ANSI Cã§ã¯é
ååããã¡ããšæ±ãããã«ãªã£ããã©ãK&Rããã®
äºææ§ãå¿
èŠã ããäžåããã®ãã£ããã£ãŠãæ±ããçããŠãããšãã
ããšã§ããããã
ãšããããã§ãçŽåŸããã®ã§åŒã£èŸŒã¿ãŸã ä¹ é
koun...@naruto-u.ac.jpãã:
> ãã£ãšä¹
éããã®ä»°ãããããšã,åãããããŠãããããªæ°ãããŸ
> ããä»ã®ãšããã§ã,çãã«"ããã§&aã¯èŠæ Œäžèš±ãããã®?" ãšåã
> ãããŠããŸãã,ãªãã§ãããªã«ãã®éšåã«ãã ããã®ãå
šãçè§£ã§
> ããŸããã§ããã(èš±ãããŠããããšã¯åœç¶ã ãšæã£ãŠããŸããã®ã§ã)
ã©ãããããã«ãããŠãããŸãããããã§ãç§ã®ç«å Žã¯ããããããš
ã§ãã
ãaãšããèå¥åã¯å·ŠèŸºå€ã®åã¯(int*)ãå³èŸºå€ã®åã¯int[size]ã ã
ãããé
åã®å Žåãé
å代å
¥ãã§ããŸãããããå³èŸºå€ã®åãåé¡ã«ãª
ãã®ã¯&ãåãæã ãã§ããã(ã¬ã³ãŒãã®äžéšãšããŠä»£å
¥ãèµ·ããããš
ã¯ãããŸããããã§ãK&Rã®Cã¯&aããããŸãããããäžèšã®ä»£ããã«
ãaãšããèå¥åã¯(int*)ã ã
ã ãã§æžã¿ãŸããããæããããã°æ¥µããŠç°¡æœã§ãã&aããããšãäžèš
ã®ããã«é·ããªããŸãããã&aããªãæ¹ãæ£ãããšãã£ãšæã£ãŠããŸã
ãã
ããããã ããã«ææãããŠã2次å
é
åããåé¡ã«ãªãããšãå
šç¶
å¿ããŠããããšãåãããŸããã1次å
é
åã ãã§ããã°ã&aãšããã®
ã¯äžèŠã§ããããã§ããã&aã¯ãªãæ¹ããããããªãã¹ãã âŠãšèšãã
ãã£ãã®ã§ãããããã¯*å
šã*ééã£ãŠããŸãããã©ãããéšããããŠ
ãããŸããã_o_
> ã§,æ¬é¡ã®åãªãã§ãã,ããŸãŸã§ã®ãããããªäººã®èšäºãèªãã§,ã
> ãããæã£ãããšã¯,Cèšèªã«ãããåãšã¯èå¥åã«å¯Ÿããå¯èœãªæäœ
> (Cã§èŠå®ãããåŒ,æŒç®å)ã®çš®é¡åã³ãã®æäœã®æåãå®å
šã«æ±ºå®ã¥
> ãããã®ãšè§£éããŸãããã€ãŸã,èå¥åã«å¯Ÿããæäœã«é¢ããŠã¯,å
> ãæ±ºãŸãã°ããšã¯äœãå¿
èŠãªããšããããšã§ããããã,ä¹
éããã®
> è§£éã§ã¯,èå¥åã«å¯Ÿããæäœã«ã€ããŠã¯åãšããšäœãã®ãã®ãã€ã
> å ããªããšå®å
šã«æ±ºå®ããããšã¯ã§ããªãã®ã§ã¯ãšæããŸãã
ã¯ããããã§ããããã¯ã§ããããç§ãåã®å±æ§ãšããŠèããã®ã¯
ãèå¥åãžã®æäœãã§ãªããå€ãžã®æäœãã§ãããå€ã®ã¿ãæ±ãã®ã ã
ãã倿°ãã©ãããã宿°ãã©ããããšããæ
å ±ãèœãšããŠèããŠããã
ãšããããšã§ãã
äœããã£ãŠåãšããããšããå®çŸ©ã¯äººã«ãã£ãŠéããããããã§(ãš
æã)ãç§ã¯åãšããã®ãäžèšã®ããã«èããŠããããšããããšã§ãã
ãããCã®èŠæ Œæžã®å®çŸ©ãšéããšããã®ã¯ãããªãã§ãããã
2次å é åå šç¶äœ¿ããªãããã§ ^_^; ä¹ é
P.S. ãšããã§Cã®èŠæ Œã§ã¯constãšãstaticãšããåã®æ
å ±ã®äžéšãªã
ã§ãããã?
ma...@crape.mj.imasy.or.jpãã:
> ã€ãŸããé
åã«å¯Ÿããã&aããšããã®ã¯ã&a[0]ããšåæ§ãšèšããã
> ã§ã¯ãªãã®ã ãšæããŸããé
åå
šäœãããããã€ã³ã¿ãšèšãäºããšã
ããã§ãããã«ãé¢ããããé
åaã®å€ãå
šäœãšããŠæäœããããšã¯
ã§ããªãããšããã®ãæ°æã¡æªããšããã§ããããã§æ°çè« :-) ãšã
ãŠãCèšèªã§ã¯é
åaã®å·ŠèŸºå€ã¯&ãåãæã ããã䜿ãããªãããšãã
ã®ãèããã®ã§ããâŠ
ã©ãã§ãã :-) ä¹ é
>> |ããŸãã以äžã®ãããã®å®£èšã«ã€ããŠããã¢ã»ã³ãã©ã¬ãã«(ãªã³ã«ãåç
§ãã
>> |OBJãã¡ã€ã«å
ã®æ
å ±)ã§ã¿ãã°åæ§ã«æ±ãããŠããŸããŸãã
>> |
>> | (1) extern int a[100];
>> | (2) extern int a[];
>> | (3) extern int *a;
>>
>> ããŠãœãèšããªããŒãããšæããŸãã
>> aåç¬ã§ã¯ãã©ãã«ããšããæå³ã§ã¯ãã£ããã§ã
>> aã«å¯Ÿããæäœã¯(3)ãšãã以å€ã§ã¯ç°ããŸãã
ãã¶ãå
èšäºã®äººããããšããã®ã¢ã»ã³ã㪠ã¬ãã«ã§ãã
äžæ¬¡åç
§ãšäºæ¬¡åç
§ãšããæå³ã§éãã§ãããã
(1),(2)ã¯aã®ãªãã»ããããçŽæ¥åç
§ããã(äžæ¬¡åç
§)ã®ã«å¯ŸããŠ
(3)ã¯aã®ãªãã»ããã«æ ŒçŽãããŠããã¢ãã¬ã¹æ
å ±ã瀺ãå
ã
åç
§ãã(äºæ¬¡åç
§)æ©æ¢°èªã³ãŒããçæãããããšã«ãªããŸãã
ãæ®å¿µãªããããã¯ãªããŸããããäžè¬ã«ã³ã³ãã€ã©ã®åºåããã¢ã»ã³ãã©
ã³ãŒã(äŸã¯16bitåŠçç³»ã®x86ã®å Žå)ã¯ä»¥äžã®ããã«åãçµæã«ãªãã¯ã
ã§ãã
ã32bitã®åŠçç³»ã§ããWORDãããDWORDãã«å€ããã ãã§åºæ¬çã«å€ãã
ãŸããããCPUãç°ãªã£ãŠãããŒã¢ããã¯ãå€ããã ãã§ãx86ç³»ã ãã
ç¹å¥æ±ãããããããªãã®ã§ããããŸããã
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// a.c
int a[100];
;-----------------------------------------------
; a.asm(asm source generated from a.c)
PUBLIC _a
_a WORD 100 DUP (?)
END
;-----------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// src_1.c
extern int a[100];
a[0]=1234;
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// src_2.c
extern int a[];
a[0]=1234; // intåé åaã®èŠçŽ [0]ã«å€(1234)ãä»£å ¥
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// src_3.c
extern int *a;
*a=1234; // ãã€ã³ã¿aã®æãintå倿°ã«å€(1234)ãä»£å ¥
ãçæãããã¢ã»ã³ãã©ã³ãŒãã¯å šãŠã以äžã®ããã«ãªãã¯ãã§ãã
;-----------------------------------------------
EXTRN _a:WORD
MOV BX,OFFSET _a
MOV WORD PTR [BX],1234
END
;-----------------------------------------------
ãBXã¬ãžã¹ã¿ã«ã¢ãã¬ã¹ãããŒãããŠããã8086ã§ã¯ã¡ã¢ãªã«çŽæ¥å€ãæžã
蟌ãåœä»€ããµããŒããããŠããªãããã§ããã80186以éã®æ¡åŒµåœä»€ã䜿ã
ããã«ã³ã³ãã€ã©ãªãã·ã§ã³ãæå®ããã°ã以äžã®ãããªã³ãŒããçæå¯èœ
ã§ãããäžè¬ã«BXã¬ãžã¹ã¿çµç±ã«ããã»ããé床ãéãã®ã§ãé床åªå
ã®
æé©åãªãã·ã§ã³ã䜵çšããå Žåã¯äœ¿ãããŸããã
MOV WORD PTR _a,1234
ãããã(3)ã¯aã®ãªãã»ããã«æ ŒçŽãããŠããã¢ãã¬ã¹æ
å ±ã瀺ãå
ãåç
§
ãã(äºæ¬¡åç
§)æ©æ¢°èªã³ãŒããçæãããããšã«ãªããªã以äžã®ãããªã³ãŒ
ãã«ãªãã¯ãã§ãããå®éã«ã¯ããã¯ãªããŸãããããããããã®ã³ãŒã
èªäœã¯åé·ã§ãããšã©ãŒã§ã¯ãããŸããã
;-----------------------------------------------
; indirect addressing code sample
EXTRN _a:WORD
_a_ptr WORD OFFSET _a ; _aã®ã¢ãã¬ã¹ãæ ŒçŽããå
éšå€æ°
; (èªåçæ)
MOV BX,_a_ptr
MOV WORD PTR [BX],1234
END
;-----------------------------------------------
ããint *a;ããšæžããšå€ãã«ããã§ããããint* a;ããšæžãã°çè§£
ããããïŒ(æå³ã¯åã)
>>Iwao Watanabe wrote:
>> ãã¶ãå
èšäºã®äººããããšããã®ã¢ã»ã³ã㪠ã¬ãã«ã§ãã
>>> äžæ¬¡åç
§ãšäºæ¬¡åç
§ãšããæå³ã§éãã§ãããã
>>>
>>> (1),(2)ã¯aã®ãªãã»ããããçŽæ¥åç
§ããã(äžæ¬¡åç
§)ã®ã«å¯ŸããŠ
>>> (3)ã¯aã®ãªãã»ããã«æ ŒçŽãããŠããã¢ãã¬ã¹æ
å ±ã瀺ãå
ã
>>> åç
§ãã(äºæ¬¡åç
§)æ©æ¢°èªã³ãŒããçæãããããšã«ãªããŸãã
>>
>>ãæ®å¿µãªããããã¯ãªããŸããããäžè¬ã«ã³ã³ãã€ã©ã®åºåãã
>>ã¢ã»ã³ãã©ã³ãŒã(äŸã¯16bitåŠçç³»ã®x86ã®å Žå)ã¯
>>以äžã®ããã«åãçµæã«ãªãã¯ãã§ãã
(snip)
32bitã®x86ã®ã³ãŒããèªããã®ãªããã€ãã®äŸãèªã¿åã£ãŠäžããã
åçŽãªã®ã§ãæå
ã«gccãããã®ãªã èªåã§è©ŠãããŠã¿ãŠãããã§ãããã
----- æ€èšŒã«äœ¿ããœãŒã¹
main()
{
extern int *a,b[];
*a = 10;
*b = 10;
}
----- ã³ã³ãã€ã«äŸ (gcc-2.7.2 on Linux Slackware)
% gcc -S foo.c
----- çæãããã¢ã»ã³ããªã³ãŒã
.file "foo.c"
.version "01.01"
gcc2_compiled.:
.text
.align 16
.globl main
.type main,@function
main:
pushl %ebp
movl %esp,%ebp
movl a,%eax
movl $10,(%eax)
movl $10,b
.L1:
movl %ebp,%esp
popl %ebp
ret
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) 2.7.2"
----- ãããŸã§
泚ç®ãã¹ããªã®ã¯ã
movl a,%eax
movl $10,(%eax) <-- ããããã€ã³ã¿aã«å¯ŸããåŠç
movl $10,b <-- ãããé
åbã«å¯ŸããåŠç
ã®éšåã§ãã
å ã®èšäºã§ç§ã瀺ããããšã確èªã§ããŸãã
Dairyo Gokan wrote in message <359DB3...@can.bekkoame.ne.jp>...
>Iwao Watanabe wrote:
>ãæ®å¿µãªããããã¯ãªããŸããããäžè¬ã«ã³ã³ãã€ã©ã®åºåããã¢ã»ã³ãã©
>ã³ãŒã(äŸã¯16bitåŠçç³»ã®x86ã®å Žå)ã¯ä»¥äžã®ããã«åãçµæã«ãªãã¯ã
>ã§ãã
ããªãã¯ãããšããããšã¯ãå®éã«ã¯çµæã確èªãããŠãªãã®ã§ããã
--------------------------------------
extern int a[];
extern int *b;
void foo ()
{
a[0]=1234;
*b=1234;
}
---------------------------------------
ãšãããœãŒã¹ãBC++5.01ã§ã³ã³ãã€ã«ãããšã以äžã®ãããªã³ãŒãã«ãªããŸãã
---------------------------------------
; void foo ()
; {
; a[0]=1234;
mov dword ptr [_a],1234
; *b=1234;
mov eax,dword ptr [_b]
mov dword ptr [eax],1234
; }
ret
---------------------------------------
ãšããããšã§ãa[]ãš*bã®éãã¯æçœã§ãã
*bã®ã»ãã¯æããã«äºæ¬¡åç
§ã«ãªã£ãŠãŸããã
// æ²³åç« çŽïŒLanguorïŒ kaw...@mti.biglobe.ne.jp
In article <6niq4t$4...@utogw.gssm.otsuka.tsukuba.ac.jp> ku...@gssm.otsuka.tsukuba.ac.jp writes:
> ã¯ããããã§ããããã¯ã§ããããç§ãåã®å±æ§ãšããŠèããã®ã¯
> ãèå¥åãžã®æäœãã§ãªããå€ãžã®æäœãã§ãããå€ã®ã¿ãæ±ãã®ã ã
> ãã倿°ãã©ãããã宿°ãã©ããããšããæ
å ±ãèœãšããŠèããŠããã
> ãšããããšã§ãã
éå»ã®Cã«ãããŠfloatåã¯å·ŠèŸºå€ãšããŠã¯ååšããŸããå³èŸºå€ãšããŠã¯åžžã«
doubleã«å€æãããŠåŠçãããŠããã®ã§ã(floatã«å¯Ÿãã&ããªããã°)
ãdoubleãšfloatã¯åãåãã§ããããã®ã§ããããããããã¯ãŸããCã«ãã
ãŠã¯enumã¯åžžã«intã®syntax sugarã§ä»£å
¥äºæãªã®ã§ãenumãšintã¯åãåããª
ã®ã§ããããã
ããã¯ãã£ã±ãã¡ãã£ãšéãã®ã§ãã£ãŠãããã°ã©ãã«ãšã£ãŠã¯ãåããšãã
æŠå¿µã«ã€ããŠãããçšåºŠå·ŠèŸºå€ãšããŠã®æå³ããéçãªæå³ããå«ãããã®ã
ææ¡ããã¹ããªã®ã§ã¯ãªãã§ããããããŸãstaticãconstã¯åã«ã¯å«ããã
ã¯ãªãã§ãããã©ãã
ã¡ãªã¿ã«ä»¥äžãANSI仿§ã«ãããåã®èšè¿°ã§ãã
ANSI C仿§ 3.1.2.5 Types
The meaning of a value stored in an object or returned by a function is
determined by the type of the expression used to access it. (An identifier
declared to be an object is the simplest such expression; the type is
specified in the declaration of the identifier.) Types are partitioned into
object types (types that describe objects), function types (types that
describe functions), and incomplete types (types that describe objects but
lack information needed to determine their sizes).
...
--
§ NTTSâFT æè¡éçºéšãšã¬ã¯ããããã¯ã³ããŒã¹æè¡ã»ã³ã¿ãŒ äžå æœ€äº Â§
äžã€çåã«æã£ãã®ã§ããã
int c[10][100];
ã«ãããŠãc[10]ã®åããšããã®ã¯æ®éã®èãæ¹ãªã®ã§ããããïŒ
ç§ã¯ä»ãŸã§c[10][100]ã¯ãããŸã§ãã2次å
ã®é
åããšãã
æããããªãã£ãã®ã§ããã
ãªã«ããc[10][100]ãšå®£èšããå Žåããc[10]ãšããé
åã®100åã®é
åã
ãšããã®ãã¡ã¢ãªäžã«ç¢ºä¿ããåŠçç³»ãèŠãããšããªãã£ãã®ã§ã
--
NAKAMURA Takahiro
ueh...@po.ntts.co.jpãã:
> éå»ã®Cã«ãããŠfloatåã¯å·ŠèŸºå€ãšããŠã¯ååšããŸããå³èŸºå€ãšããŠ
> ã¯åžžã«doubleã«å€æãããŠåŠçãããŠããã®ã§ã(floatã«å¯Ÿãã&ã
> ãªããã°)ãdoubleãšfloatã¯åãåãã§ããããã®ã§ããããããã
> ãã¯ãŸããCã«ãããŠã¯enumã¯åžžã«intã®syntax sugarã§ä»£å
¥äºæãªã®
> ã§ãenumãšintã¯åãåããªã®ã§ããããã
ããã§ãããããã®å€ã¯ãã¿ãã€ãšããã§ãã
äžåãããææãããŠãããã«ãç§ã¯èªåã®åæãª :-) èšèªã¢ãã«
ã«ããŠã¯ããŠçè§£ããŠãŸããã®ã§ãfloatã¯å³èŸºå€ã¯ããããã©æŒç®ã®
ç¬éã«doubleã«å€æãããããšçè§£ããŸãããšãã«äžåããã®ãã®
floatã«é¢ããè§£é(å³èŸºå€ãååšããªã)ã¯
f1 = f2;
ã¿ããã«ä»£å
¥æŒç®ã§ãããã ãšãèãã§ãã? enumã¯ãŸã£ããintãšå
ãåã ãšæããŸããæ®å¿µã§ããã
> ããã¯ãã£ã±ãã¡ãã£ãšéãã®ã§ãã£ãŠãããã°ã©ãã«ãšã£ãŠã¯ãåã
> ãšããæŠå¿µã«ã€ããŠãããçšåºŠå·ŠèŸºå€ãšããŠã®æå³ããéçãªæå³ã
> ãå«ãããã®ãææ¡ããã¹ããªã®ã§ã¯ãªãã§ããããããŸãstaticã
> constã¯åã«ã¯å«ãããã¯ãªãã§ãããã©ãã
ããããstaticãconstã¯å«ããããªãã®ã§ãããããã¯äžèŽããŸãã:-)
巊蟺å€ã®åãšå³èŸºå€ã®åã®åæ¹ã«ã€ããŠèãããããã¯ããã§ããã§
ãã(èªåã®è¶£å³ãããªãã§ããèšèªãããã ããèããããåŸãªãã§
ããã)
> ã¡ãªã¿ã«ä»¥äžãANSI仿§ã«ãããåã®èšè¿°ã§ãã
> ANSI C仿§ 3.1.2.5 Types
>
> The meaning of a value stored in an object or returned by a function is
> determined by the type of the expression used to access it. (An identifier
> declared to be an object is the simplest such expression; the type is
> specified in the declaration of the identifier.) Types are partitioned into
> object types (types that describe objects), function types (types that
> describe functions), and incomplete types (types that describe objects but
> lack information needed to determine their sizes).
> ...
ãããç§ãèªãã§ãã倿°ãã®ãã®ããåã§ããããã«ã¯èªããªãã
ã§ããããŒããŸãç§ã®å
å
¥èгãšããããšã§ããããã©ã
ããã§äžåããã®ä»¥åã®èšäºã®å 容ã§ããã
äžåãã:
> ãCããã°ã©ã äžã«çŸããXåã®é
åå€ã¯ãXåãæããã€ã³ã¿å€ã«å€
> æãããããã®ãã€ã³ã¿å€ã®å®éã®å€ã¯ãã®é
åã®å
é èŠçŽ ãæãã
> ãã®æã«é
åã®å€ã倿Žãããããã§ã¯ãªããã
ã€ãŸããé
åå€ã¯ä»®æ³çã«ã¯ååšããããåžžã«ååšããçŽåŸã«ãã€ã³
ã¿å€ã«å€æãããããå®éã«å
·çŸããããšã¯ãªãããšããããšã§ããã
ãªããäžã®floatã®è§£éã«äŒŒãŠããã㊠:-)
> 以äžãé€ãç¶æ³ã§ãã
> ã»sizeofæŒç®(é
åã®ã€ã³ããã¯ã¹èšç®ã®ãããªæé»ã®sizeofæŒç®ãå«ã)ã®å¯Ÿè±¡ã
> ã»&æŒç®ã®å¯Ÿè±¡ã
> ãã ãäŸå€ã¯é¢æ°ã®ä»®åŒæ°å®£èšã«ãããäžæ¬¡å
ç®ã®é
åã®å®£èšã§ããã¯ãããª
> ãæå³ã§ããã€ã³ã¿ãšåãã«ãªããŸãã
ãšãããµãã«èããããããé
ååç§°ã§ããèå¥åã®å·ŠèŸºå€ã¯é
åã
ããå³èŸºå€ã¯åžžã«ãã€ã³ã¿ããšèããæ¹ãæè§£ãªããã«ç§ã«ã¯æããã
ãã§ãããã¡ãããsizeofã&ã¯é
åã®å·ŠèŸºå€ãåé¡ã«ãªãæ°å°ãªãå Ž
åã«çžåœããŸãããã
èªå·±æµåæè§£éã§ãããŸããã ä¹ é
In article <lv3ecjw...@picachu.netlab.co.jp>,
Yukihiro Matsumoto <ma...@netlab.co.jp> writes:
>|na...@can.bekkoame.ne.jpãã:
>|> ãæã¯æžããªãã£ãã®ãã©ããç¥ããŸããããDOSçã®ãMicrosoft Cã
>|> ã§ã¯ã倿°é
åãäŸ:int a[100];ãã«å¯ŸããŠã&aããšæžããšããšã©ãŒ
>|> ã¬ãã«äžããŠããšãé
åã«&ã¯ãããžãããç¡èŠããã§ïœ(ããªãæèš³)ã
>|> ã¿ãããªã¯ãŒãã³ã°åºããŸããããšã©ãŒã«ã¯ãªããŸããããçµæãšããŠ
>|> ã¯ã&a[0]ããšåæ§ã«ã¿ãªãããŸãã
>|
>| ãããã³ã³ãã€ã©ãã²ã©ãããèšèªä»æ§ãæ¹å€ããŠããããã
ãã㯠pcc ã®å®è£ ãããã®ãŸãŸæã£ãŠããã¿ãããªå®è£ ã§ããã
>ããŒãïŒé
·ããªããšã¯ããããŸãããïŒèšæ¶ã«ããã°pccã®é ãã
>ããã ã£ããããªæ°ãããŸãïŒå°ãªããšãANSI以åã«ã¯ã§ããªãC
>ã³ã³ãã€ã©ã¯ãªãã£ãããããªãããªïŒ
UNIX V7 ã® cc ã§ã¯ãK&R 第1çã®èšè¿°éããé
åã« & ãä»ããããšã¯
ã§ããŸããã§ãããããããåœæãã pcc ã§ã¯ãèŠåæ±ãã§ããã® &
ãç¡èŠããŠããŸããã
ïŒ pcc 㯠K&R ã®ææ³ã誀解ããŠããæã幟ã€ããããŸããããããã
âint a[100];âã«å¯ŸããŠâ&aâã (int (*)[100]) åã«ãªãããã«ãªã£
ãïŒé
åã«å¯Ÿã㊠& ã䜿ããããã«ãªã£ãïŒã®ã¯ ANSI C ããã§ãã
ãšããããã§ã
In article <6nh5dk$n...@utogw.gssm.otsuka.tsukuba.ac.jp>,
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> ããŒãããŸããã&a ã£ãŠä»ã®Cèšèªã§æžãããã§ãããããæžããã®
>ãªããç§ã®ç¥ã£ãŠããCããå€ãã£ãŠãã®ã§ã䞻匵ããã¹ãŠåãæ¶ããŠ
>ä¿®è¡ããªãããŸãã ^_^;
ä¿®è¡ããªãããŠãã ããã(^_^)
ïŒãããªããšãæžããŠããã®ã ããã(^_^;
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
In article <6npiq0$6...@utogw.gssm.otsuka.tsukuba.ac.jp>
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> äžåãããææãããŠãããã«ãç§ã¯èªåã®åæãª :-) èšèªã¢ãã«
> ã«ããŠã¯ããŠçè§£ããŠãŸããã®ã§ãfloatã¯å³èŸºå€ã¯ããããã©æŒç®ã®
> ç¬éã«doubleã«å€æãããããšçè§£ããŸãããšãã«äžåããã®ãã®
> floatã«é¢ããè§£é(å³èŸºå€ãååšããªã)ã¯
>
> f1 = f2;
>
> ã¿ããã«ä»£å
¥æŒç®ã§ãããã ãšãèãã§ãã?
K&Rãšãã®è©±ãªã®ã§ãŸã£ããèªä¿¡ã¯ãããŸãããããf1 = f2 + f3ãã®å Žåã
èãäžè¬åãããšã
> f1 = f2;
ã®åå¥éãã®æå³ã¯ãf2ã®å³èŸºå€ãdoubleã«å€æãããf1ã®å·ŠèŸºå€ã瀺ãé å
ã«æ ŒçŽããããã®æã«doubleâfloatã®å€æãèµ·ããã®ã§ãããããã æé©å
ã«ãããããåäœã®ã³ããŒã«ãªãå¯èœæ§ã¯ããã®ããªãšã
> enumã¯ãŸã£ããintãšåãåã ãšæããŸããæ®å¿µã§ããã
ããŒãã
> ããããstaticãconstã¯å«ããããªãã®ã§ãããããã¯äžèŽããŸãã:-)
Cã§ã¯ããã§ããC++ã«ãªããšããæèŠãããã€ããŸããC++ã§ã¯constã¯ã¡ãœã
ãéžæãšãã§å®è³ªçã«åã®ãããªåããããŸãããããã
> 巊蟺å€ã®åãšå³èŸºå€ã®åã®åæ¹ã«ã€ããŠèãããããã¯ããã§ããã§
> ãã(èªåã®è¶£å³ãããªãã§ããèšèªãããã ããèããããåŸãªãã§
> ããã)
lispãªã©ã®åçèšèªã§ã¯ä¹
éããã®ãã£ãããããŠããããšã¯ãã³ãšããŸãã
ãŸãç§ã®è¶£å³ã§ããããŸãã
> ãããç§ãèªãã§ãã倿°ãã®ãã®ããåã§ããããã«ã¯èªããªãã
> ã§ããããŒããŸãç§ã®å
å
¥èгãšããããšã§ããããã©ã
ç§ãå¿
ãããCã®ãå[*1]ãã倿°ã«å¯Ÿãã屿§ã ãšã¯æããªãã§ããããã
ãå€ãã ãã«å±ãããšãæããŸãããéçã«åã¥ããè¡ãèšèªã§ããCã«ãã
ãŠã¯ãåæŠå¿µãã¯ã³ã³ãã€ã«æã®åãã§ãã¯ã代å
¥æ§ã«ãããããã®ã§ããã
éçãªåŽé¢ã§éèŠãªåœ¹å²ãæãããŠããã¯ãã§ããããã«ã¯enumã«ããå¯èªæ§
åäžãšããconstãªã©ã®ã¢ã¯ã»ã¹å¶åŸ¡æ©æ§ã絡ãã§ããã®ã§ã¯ãªãã§ããããã
ã€ãŸããåããããããªããã¯ãå®çŸ©ã¯ã©ããããæç¢ºãªå¢çç·ã®ç¡ããããŒ
ããããšããã°ã¬ãŒãŸãŒã³ã®äžã«ããã®ã§ã¯ãªãããšèããããã«ãªããŸãã
(ç§ã®é ããŒãããããŠãã ããããããŸããã)ã
[*1] ãã¡ãããããã§èšããåãã¯C仿§ã«ãããŠå®ããããŠãåã
ãããªããŠç§ã®èããæã®åã®è©±ã§ãã念ã®ããã
> > ãCããã°ã©ã äžã«çŸããXåã®é
åå€ã¯ãXåãæããã€ã³ã¿å€ã«å€
> > æãããããã®ãã€ã³ã¿å€ã®å®éã®å€ã¯ãã®é
åã®å
é èŠçŽ ãæãã
> > ãã®æã«é
åã®å€ã倿Žãããããã§ã¯ãªããã
>
> ã€ãŸããé
åå€ã¯ä»®æ³çã«ã¯ååšããããåžžã«ååšããçŽåŸã«ãã€ã³
> ã¿å€ã«å€æãããããå®éã«å
·çŸããããšã¯ãªãããšããããšã§ããã
> ãªããäžã®floatã®è§£éã«äŒŒãŠããã㊠:-)
ããã§ãããæ Œäžããšãæé»ã®å€æãšããããæ£èŠåæ©æ§ããCã®è£ã§é»ã
ãš
åããŠããŸãã
> ãšãããµãã«èããããããé
ååç§°ã§ããèå¥åã®å·ŠèŸºå€ã¯é
åã
> ããå³èŸºå€ã¯åžžã«ãã€ã³ã¿ããšèããæ¹ãæè§£ãªããã«ç§ã«ã¯æããã
> ãã§ãããã¡ãããsizeofã&ã¯é
åã®å·ŠèŸºå€ãåé¡ã«ãªãæ°å°ãªãå Ž
> åã«çžåœããŸãããã
ç§ãšããŠã¯ããããé
åã«æ£ã
å ã
ãšå³èŸºå€ããã£ãŠæ¬²ãããšæããŸãã
é
åãŸãããšä»£å
¥/æž¡ã/è¿ãã¯ä»ã§ããšã©ãŒã ããããããèš±å¯ããäžã§ã
> > ãã ãäŸå€ã¯é¢æ°ã®ä»®åŒæ°å®£èšã«ãããäžæ¬¡å
ç®ã®é
åã®å®£èšã§ããã¯ãããª
> > ãæå³ã§ããã€ã³ã¿ãšåãã«ãªããŸãã
ãšããäŸå€ããåé€ãå¯å€é·é
åããã¡ããšå®è£
ããã°çŽ çŽãªå§¿ã«ãªããšæã
ã®ã§ãããã¡ãã埡ææã®éãäºææ§ã®åé¡ããããŸããã€ãŸããmain(int,
char*[])ã¯æ§æ¥ã®crt0ããåŒã³åºããªããªããããªããmain(int, char**)ãš
æžããªããã°ãããªããªããŸããã§ãããã¯ããã§ãããããªãã§ãã(é§ç®?)ã
ãªã«ãããã颿°ã®ä»®åŒæ°å®£èšã«ãããäžæ¬¡å
ç®ã®é
åã®å®£èšã¯ãããªãæå³
ã§ããã€ã³ã¿ãšåãããšããèŠåã¯ããããã«ç¢ºä¿¡ç¯çã§ãé
åãšãã€ã³ã¿ã
æ··åãããããšããCã®èšèšè
ã®æå³ã«åºã¥ããã®ã§ããã€ãŸãCãæ£ããçè§£
ããã«ã¯ãèšèšè
ã®æå³ã«ã ãŸãããã«æ¬åœã®ããšãèŠæããªããã°ãªããã°
ãªããªãããšããâŠã(ãªãã¡ã
ãŒèšèªãã)
é
åã®èŠçŽ åç
§æŒç®åã[]ããé
åã«å¯Ÿãããã®ã§ã¯ãªããã€ã³ã¿ããªãã©ã³
ãã§ãããšããCã¯è¯ãèãããšå®ã«ãŠããŒã¯ãªèšèªã§ãããã
ka...@pfu.co.jpãã:
> const ã¯åã®äžéšïŒå修食åïŒã§ãããstatic ã¯èšæ¶ã¯ã©ã¹ã§ãã
ãã£ã±ããããªãã§ãããäžè¬ã«ãã¹ãŠã®åã«ã€ããŠå¯Ÿå¿ããconst
ããããšæã£ãŠããã®ã§ããããã
ãããŸãåã«ããããçã蟌ãã®ã¯å¥œãããªã ä¹ é
ãããç§ã®èªè§£åã®ç¡ãã«ãããã®ã§ãã
>> naka...@video.yaita.sharp.co.jpãã:
>> > äžã€çåã«æã£ãã®ã§ããã
>> > int c[10][100];
>> > ã«ãããŠãc[10]ã®åããšããã®ã¯æ®éã®èãæ¹ãªã®ã§ããããïŒ
>>
>> ãc[10]ã®ããšããã®ã¯å€ã§ãããããc[i]ã(i = 0..9)ã«ã¯åããã£
>> ãŠãããã¯å€§ãã100ã®æŽæ°ã®é
åã ãšæããŸãã§ãã
>>
ãããçŽåŸããŸãããç§ãèšäºãèªã¿ééã£ãŠããããã§ãã
>>
>> > ãªã«ããc[10][100]ãšå®£èšããå Žåããc[10]ãšããé
åã®100åã®é
åã
>> > ãšããã®ãã¡ã¢ãªäžã«ç¢ºä¿ããåŠçç³»ãèŠãããšããªãã£ãã®ã§ã
>>
>> å¥ã«ã¡ã¢ãªäžã«é£ç¶ããŠé
眮ããŠããã ãããããšæãã®ã§ãããå€
>> ã§ãããã?
>>
ãããšãc[10][100]ã«ã€ããŠããc[10]ã®åããšããèšèãåºãŠæ¥ããšãã«ã
ãc[10]ãšãããªããžã§ã¯ãã®100ååã®é
åããèããŠããã®ããªãš
æã£ãŠããããã§ãã
ã§ããå®éã®ãã³ããªã³ã°ã§ã¯ã©ã¡ãããšãããšãc[100]ãšãããªããžã§ã¯ãã®
10ååã®é
åããšãããµããªãã³ããªã³ã°ãããŠããã®ã§ãããïŒããš
æã£ã次第ã§ãã
ïŒåæã«åéãããŠããããã§ãã¿ãŸããã
--
NAKAMURA Takahiro
ueh...@po.ntts.co.jpãã:
> Cã§ã¯ããã§ããC++ã«ãªããšããæèŠãããã€ããŸããC++ã§ã¯const
> ã¯ã¡ãœããéžæãšãã§å®è³ªçã«åã®ãããªåããããŸãããããã
ã¡ãœããéžæã«é¢äžããã®ãªãããã§ãããããã倿°ãã©ãããš
宿°ãã©ããã§åã«å«ããããã©ãããå€ãããã§ããããŸãã©ã£ãã«
ç·åŒãããªããšãããªããã§ããã©ã
> ç§ãå¿
ãããCã®ãå[*1]ãã倿°ã«å¯Ÿãã屿§ã ãšã¯æããªãã§ãã
> ããããå€ãã ãã«å±ãããšãæããŸãããéçã«åã¥ããè¡ãèšèª
> ã§ããCã«ãããŠã¯ãåæŠå¿µãã¯ã³ã³ãã€ã«æã®åãã§ãã¯ã代å
¥æ§
> ã«ãããããã®ã§ãããéçãªåŽé¢ã§éèŠãªåœ¹å²ãæãããŠããã¯ã
> ã§ãã
ããã¯ããã§ããããããã¹ãŠãåãã ãšæãããããç§ã¿ãããåã
ãšãã以å€ã®å±æ§ãåããã£ããã®ã ãšæãããããã®éãã ãšæãã®
ã§ããããããšãã°register屿§ãã€ããš&ãåããªããªããŸãããã
ããåã®äžéšããšèšããããšâŠãšãã
> ããã«ã¯enumã«ããå¯èªæ§åäžãšããconstãªã©ã®ã¢ã¯ã»ã¹å¶åŸ¡æ©æ§
> ã絡ãã§ããã®ã§ã¯ãªãã§ãããããã€ãŸããåããããããªããã¯ã
> å®çŸ©ã¯ã©ããããæç¢ºãªå¢çç·ã®ç¡ããããŒããããšããã°ã¬ãŒãŸãŒ
> ã³ã®äžã«ããã®ã§ã¯ãªãããšèããããã«ãªããŸãã(ç§ã®é ããŒã
> ããããŠãã ããããããŸããã)ã
ãã£ã±ãèªåã§èããå Žåã«ã¯æç¢ºãªå¢çã¯ãªããã ã
> [*1] ãã¡ãããããã§èšããåãã¯C仿§ã«ãããŠå®ããããŠãåã
> ãããªããŠç§ã®èããæã®åã®è©±ã§ãã念ã®ããã
ããã§ãããç§ã«ã€ããŠããã°ãèªåãèãããããèšèªããªããžã§
ã¯ãæåã ãšãåã¯å€ã ãã ãšæããããªããã§ããã
: ã€ãŸããé
åå€ã¯ä»®æ³çã«ã¯ååšããããåžžã«ååšããçŽåŸã«ãã€ã³
: ã¿å€ã«å€æãããããå®éã«å
·çŸããããšã¯ãªãããšããããšã§ããã
: ãªããäžã®floatã®è§£éã«äŒŒãŠããã㊠:-)
> ããã§ãããæ Œäžããšãæé»ã®å€æãšããããæ£èŠåæ©æ§ããCã®è£
> ã§é»ã
ãšåããŠããŸãã
ããã¯ã©ã£ã¡ããšãããšå®è¡æã£ãœãã€ã¡ãŒãžã§ãã? ãããããã¯
ã©ã¡ãã§ãããã§ããããããã°ç§ããæé»ã®å€æå«ãããªã®ããã®ä»¶
ã«åœ±é¿ããŠããã§ãã
ââ»
: ãšãããµãã«èããããããé
ååç§°ã§ããèå¥åã®å·ŠèŸºå€ã¯é
åã
: ããå³èŸºå€ã¯åžžã«ãã€ã³ã¿ããšèããæ¹ãæè§£ãªããã«ç§ã«ã¯æããã
: ãã§ãããã¡ãããsizeofã&ã¯é
åã®å·ŠèŸºå€ãåé¡ã«ãªãæ°å°ãªãå Ž
: åã«çžåœããŸãããã
> ç§ãšããŠã¯ããããé åã«æ£ã å ã ãšå³èŸºå€ããã£ãŠæ¬²ãããšæããŸãã
ãã¡ããã§ãã!!! æåã«Ritcheãããããªãã£ããã«ããããéšã
(ã£ãŠã»ã©ã§ããªãã§ãã :-)ã«ãªã£ãŠããè¿·æããŠã人ã¯äžæ¯ããã
ã ãšæããŸãã
> é
åãŸãããšä»£å
¥/æž¡ã/è¿ãã¯ä»ã§ããšã©ãŒã ããããããèš±å¯ããäžã§ã
...
> ãšããäŸå€ããåé€ãå¯å€é·é
åããã¡ããšå®è£
ããã°çŽ çŽãªå§¿ã«ãªããšæã
> ã®ã§ãããã¡ãã埡ææã®éãäºææ§ã®åé¡ããããŸããã€ãŸããmain(int,
> char*[])ã¯æ§æ¥ã®crt0ããåŒã³åºããªããªããããªããmain(int, char**)ãš
> æžããªããã°ãããªããªããŸããã§ãããã¯ããã§ãããããªãã§ãã(é§ç®?)ã
ããããã¡ããOKã§ããç§ã¯ãããANSIã«ãªã£ããšãã®æ£ããããæ¹
ã ã£ãã®ã§ã¯ããšæã£ãŠããŸããã
> ãªã«ãããã颿°ã®ä»®åŒæ°å®£èšã«ãããäžæ¬¡å
ç®ã®é
åã®å®£èšã¯ãã
> ãªãæå³ã§ããã€ã³ã¿ãšåãããšããèŠåã¯ããããã«ç¢ºä¿¡ç¯çã§ã
> é
åãšãã€ã³ã¿ãæ··åãããããšããCã®èšèšè
ã®æå³ã«åºã¥ããã®
> ã§ããã€ãŸãCãæ£ããçè§£ããã«ã¯ãèšèšè
ã®æå³ã«ã ãŸãããã«
> æ¬åœã®ããšãèŠæããªããã°ãªããã°ãªããªãããšããâŠã(ãªãã¡ã
ãŒ
> èšèªãã)
ãããããããã§ç§ã¯1次å
ã®é
åãã䜿ãããããåãªãmallocã
ããé åã®å
é ã§ãããã®ããã«ããã°ã©ãã³ã°ããç¿æ
£ãã€ããŠãã®
ã§ãããããã®æ¹ãèŠããããã ãã®âŠãŸã倿¬¡å
é
åãæ¥ããšç Žç¶»ã
ãã®ã¯ãªããšãªãåãã£ãŠãŸããâŠ
> é
åã®èŠçŽ åç
§æŒç®åã[]ããé
åã«å¯Ÿãããã®ã§ã¯ãªããã€ã³ã¿ã
> ãªãã©ã³ãã§ãããšããCã¯è¯ãèãããšå®ã«ãŠããŒã¯ãªèšèªã§ãããã
ã§ãããåã«ãæžããŸãããã©ããããããããã£ãããããã!ã
ãšæã£ãŠãã®æã¯ãããªãã«ããããã ã£ããã©ãçµå±ã¯å€±æã ã£ãæ
è¡çéžæã®äŸãªãã§ãããã
ããã§â»ã¯ãã£ã±ãããã§ãããã? (ãã€ãã) ä¹ é
In article <6nq09c$8...@utogw.gssm.otsuka.tsukuba.ac.jp> ,
ku...@gssm.otsuka.tsukuba.ac.jp writes
>> ç§ãšããŠã¯ããããé
åã«æ£ã
å ã
ãšå³èŸºå€ããã£ãŠæ¬²ãããšæããŸãã
> ãã¡ããã§ãã!!! æåã«Ritcheãããããªãã£ããã«ããããéšã
>(ã£ãŠã»ã©ã§ããªãã§ãã :-)ã«ãªã£ãŠããè¿·æããŠã人ã¯äžæ¯ããã
>ã ãšæããŸãã
ãªãã»ã©ãå³èŸºå€ãæããªãé
åãäœããããã°ã
int (const a)[100];
ãšãæžãã°ããããã§ããããšãããã
int a[100];
const a;
ãšåããŠæžããæ¹ãããã®ããª? ããããã°ãconst a ã®ãªãå Žåã¯ã
int a[];
int *b;
ã¯ããŸã£ããåãã«ãªã£ãŠãªããªãçŸããããç¥ããªãããããããã ãšã
b ã®è¡ãå
ããšãããªããšããå·®ãããã...
> ããã¯ã©ã£ã¡ããšãããšå®è¡æã£ãœãã€ã¡ãŒãžã§ãã? ãããããã¯
>ã©ã¡ãã§ãããã§ããããããã°ç§ããæé»ã®å€æå«ãããªã®ããã®ä»¶
>ã«åœ±é¿ããŠããã§ãã
åã¯å²ãšå¥œãã§ãããã ãã©ã倿ããããããããªããšããå€ã«ãã£ãŠ
倿ãããããéããšããããšå°ããã©ã
---
Shinji KONO @ Information Engineering, University of the Ryukyus
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§
naka...@video.yaita.sharp.co.jpãã:
> ãããšãc[10][100]ã«ã€ããŠããc[10]ã®åããšããèšèãåºãŠæ¥ã
> ãšãã«ããc[10]ãšãããªããžã§ã¯ãã®100ååã®é
åããèããŠãã
> ã®ããªãšæã£ãŠããããã§ãã
ãªãã»ã©ãã§ãcã¯2次å
é
åãªã®ã§ãc[10]ãšãããªããžã§ã¯ãã¯æŽ
æ°ã10åã®é
åãããªããããªâŠãŸãããããããšãèšãåºããšã©ãã«
ãçµãããªãã®ã§ãããŠãããŸããã ^_^;
ããšãã°Pascalã ãš c: array[1..10] of integer; ãšãã®ããã«ã
å®çŸ©ããã倿°åŽã¯åç¬ã§ãåãå¥ã«æžããŸãããããšãããCã®å®£èš
å㯠int c[10]; ã§ãããããããåŒã®äžã«åºãŠæ¥ããã®ãããªæžãæ¹
ã«èŠããŠãããã§ããããè°è«ããããšå®£èšãæžããŠããã®ãåç
§ãã
åŒãæžããŠããã®ãæ··ä¹±ããããšããã®ãå
å¶ãªãã ãšæããŸãã
ããã c: (*int[])[100]; ãªããŠã®ãããŸãã¡âŠ ä¹ é
P.S. ãã¿ã©ã¡ã§æžããã®ã§ããæ£ããåæå®ã«ãªã£ãŠãŸã? å
šç¶ãã
ããªãâŠ
koun...@naruto-u.ac.jpãã:
> 忬ããããïŒææãå«ãã¡ãŒã«ãé ããã®ã§ïŒç޹ä»ãããŠé ããŸãã
åäœã§ãããŒã
> ããã®èª¬æã«ããããã«,ã¯ããã¯å·ŠèŸºå€=代å
¥å¯èœãšæã£ãŠããŸããã
> ãšããã®ãã«-ããã³ã®ããã°ã©ãã³ã°èšèªCã«ã¯"巊蟺å€"ãšããåå
> ã¯,代å
¥åŒE1=E2ããããŠããããšãã説æããã,ãªã代å
¥å¯èœãšã
> ãªãšèããŠãŸããã(ãããããååãã€ãããªãšèšãããã)
ããã§ããããç§ã¯éã«ãé
åã«ã¯ä»£å
¥ã§ããªããã巊蟺å€ããªã
(ã¹ãã )ãšæã£ãŠãŸããã
> ãšããã§,é
ååã¯å€æŽå¯èœãªå·ŠèŸºå€ã§ã¯ãªããšãããŸãã,é
åã®èŠ
> çŽ ã¯å€æŽå¯èœãªå·ŠèŸºå€ãšèããŠããã®ã§ããããã
Cã®èŠæ Œæžã¯åãããŸããããäžè¬ã®çšèªã¯pããã€ã³ã¿ã®ãšã*pã¯å€
æŽå¯èœãªå·ŠèŸºå€ã§ãããããããã倿Žå¯èœã§ãªã巊蟺å€ãªããŠçšèªã¯
ä»ã¯ãããŠèããŸããããããconstãšé
åãšã§ã¯äºæ
ãéããŸãããã
constã¯å€ãå€åããŸããããé
åã¯å
šäœãšããŠã®ä»£å
¥ãã§ããªãã ã
ã§ãåã
ã®èŠçŽ ã¯å€åã§ããŸããã
>>> ã€ãŸãïŒèå¥åã«å¯Ÿããæäœã«é¢ããŠã¯ïŒåãæ±ºãŸãã°ããšã¯äœãå¿
èŠãªã
>>> ãšããããšã§ãããããïŒä¹
éããã®è§£éã§ã¯ïŒèå¥åã«å¯Ÿããæäœã«ã€ã
>>> ãŠã¯åãšããšäœãã®ãã®ãã€ãå ããªããšå®å
šã«æ±ºå®ããããšã¯ã§ããªãã®
>>> ã§ã¯ãšæããŸããèªåãäœããšãã§ããªãééã£ãè§£éãããŠããªãã®ãã©
>>> ããææããŠé ãããã«é·ã
ãšåæãªè§£éãæžãããŠé ããŸããã
ã ãã®èšäºã®åŒçšãåãããªããªããŸãããããšãããç§ãšããŠã¯ã
åãèå¥åã«å¯Ÿãããã¹ãŠã®æäœã説æããããšããèŠæã¯åãããŸã
ãã©ãããããšãããããŸã奜ããããªãã§ãããŸãããã¯å¥œã¿ã®åé¡
ãšããããšã§(èŠæ Œæžã®èšãæå³ã®åã ã£ããç§ã®èšãåãšã¯éããšã
ãã®ã¯ãã®éãã§ã)ã
> ãªãã»ã©ïŒç°¡åã«ã¯ãããªããã®ãªãã§ããããšããã§ïŒäžã®i+3ãª
> ããŠã®ã¯â巊蟺å€ã§ãªã->&ãåºæ¥ãªãïŒã¢ãã¬ã¹ãåããªããïŒ->
> ãªãã·ã§ã¯ãã§ãªããâãšãªããããªæ°ãããŸããïŒäžåããã®ANCI
> C仿§3.1.2.5ãTypesã®ç޹ä»ã«ããã°ïŒåã®çš®é¡ã¯å€§ããåãããšãª
> ããžã§ã¯ãåïŒé¢æ°åïŒäžå®å
šåã«åé¡ãããããã§ããïŒãã®å€§å
> é¡ã®ã©ãã«å
¥ããã®ãªãã§ããããã
ç§ãèãããã§ããã ããå€ãšèšæ¶åã宿°ã¯åããããšãããâŠ
>> ãŸããèå¥åã¯ãªããžã§ã¯ãã衚ã以å€ã«ã颿°ãæ§é äœã®ã¿ã°ãŸãã¯ã¡ã³ãã
>> typedefåãgoto ã® label ãªã©ã衚ããŸããlabel 㯠C ã§ã¯åãæã¡ãŸããã
>> 颿°ã¯é¢æ°åãã¡ã³ãã¯ãªããžã§ã¯ãåã§ãããã¿ã°ã typedefåã¯å®çŸ©ãã
>> ãåã衚ãã ãã§ãããèªèº«ãåãæã€ãšã¯èšããªãã®ã§ã¯ãªãã§ããããã
åã衚ãã®ãšåãæã€ã®ãšã¯éããã§ããããŸãããã§ããããã©ããã
ãªãã倧å€ã§ãããŒã ä¹ é
>> æ¹ããŠèšæ£ããŠæžãã°ã
>>
>> extern int a[100];
>> extern int a[];
>> extern int a;
>>
>> ãã(å€éšåç
§ãããã®ã¯ã¢ãã¬ã¹æ
å ±ã®ã¿ãšããç¹ã§)
>> OBJã¬ãã«ã§ã¯åãæ±ããšèšãããã£ãã®ã§ãããã
ããã¯åŠçç³»ã«ãã£ãŠäºæ
ã¯å€ãããšæããŸãã
ãæã®(ä»ã§ã䜿ãããŠããããç¥ããªããã©)ããåŠçç³»ã§ã¯
ããããç¥ããªãããã以äžã®ããšã¯èšããªããšããããšã§ãã
å°ãªããšãLinuxçãæ¡çšããŠããELFãšãããã©ãŒãããã§ã¯ã
å€éšåç
§ãããã®ã¯ã¢ãã¬ã¹æ
å ±ã®ã¿ãšã¯éããŸãããå€éšåç
§ã®
察象ãšãªãã·ã³ãã«ã«åãæ·»ããããŠæ ŒçŽãããŠããã®ã§ãã
SunOS5ã«éå±ã®nm (/usr/ccs/bin/nm) ã ãš
ELFã®è©³ããã·ã³ãã«æ
å ±ãåºåããŠãããã¿ããã§ãã
Linuxã ãšGNUã®objdumpã䜿ãã°ããã§ãã
äŸ
% objdump -t foo.o | more
ãã£ãšãããã®æ
å ±ãããšã«ãšã©ãŒãšãããã©ããã¯
ããŒã«ã«ãã£ãŠäºæ
ãç°ãªããŸãã
ç§ã®äœ¿ã£ãŠãã gcc ã³ã³ãã€ã« ãã©ã€ããŒãåŒã³åºããŠãã
ããŒã«ã¯ééã£ãäœ¿ãæ¹ãããŠãããšããšã©ãŒ ã¡ãã»ãŒãžã
åºããŠãããŠããã¿ããã§ãã
>> ãã£ãšããé
åãããªãaã«å¯ŸããŠa[10]
>> ãšãæžããšææ³ãšã©ãŒæ±ããããå¯èœæ§ãããŸããã»ã»ã»ã
ããã¯ãOBJã¬ãã«ããšã¯ãŸãéãã¬ã€ã€ã®è©±ã®ãããªæ°ãããŸãã
äžã®ç§ã瀺ããåŠçç³»ã§ã¯ãELFãã¡ã€ã«ã«é¢ãããšããã§èµ·ãã
ãšã©ãŒã§ã¯ææ³ãšã©ãŒãšã¯åºããŠãããªããšæãã®ã§ã
>> > pushl %ebp
>> > movl %esp,%ebp
>>
>> ãæ®å¿µãªããgccãã€ã³ã¹ããŒã«ãããç°å¢ã¯çŸåšæå
ã«ãªã(UNIX USERã®
>> ä»é²CDROMã¯ããã空ãHDDããªã)ãã§ãããgccã®åºåããã¢ã»ã³ãã©ã®
>> ããŒã¢ããã¯ã£ãŠã€ã³ãã«åœ¢åŒãããªããã§ãããã
ããã ã©ãã«ã調æŽããã°ãMASMã§ã¢ã»ã³ãã«ã§ããã€ã³ãã«åœ¢åŒã®
ãœãŒã¹ãåºãããšããè©±ãæžç±ã§èªãã èšæ¶ããããŸãã
æ®éã«GNUã®é
ä»ããã±ãŒãžãã€ã³ã¹ããŒã«ãããšAT&T圢åŒã«ãªããŸãã
ãã®åœ¢åŒã§ã¯80[12]?86圢åŒã®ãããã16ããã圢åŒã¯ãµããŒããããŸããã
>> ã³ãŒãã®æå³ã¯çè§£ã§ããŸãããã©ãã奜ãã«ãªããŸããã
ã¢ã»ã³ãã©ãšããŠã®(ç¹ã«ã»ã°ã¡ã³ãé¢ä¿ã®)ã«ãŒã«ãåçŽãªã®ã§ã
æ
£ããã°MASMã®ãããèªã¿ãããã§ããã:)
-----
>> ããšããã§é
åã«æ»ããŸãããå€éšåç
§ãããé
åããŒã¿ãèšè¿°ãããšã
>> ã¿ãªããã¯ã©ã®ããã«æžãããŠããã®ã§ããããïŒ
(snip)
ç§ã¯ãå€éšåç
§ãããé
åã¯ãŸãå®çŸ©ããŸããã
é
åã¯å±æå©çšãç®çãšããŠauto倿°ã§å®çŸ©ããããšã¯ãããããŸããã
ã»ãšãã©ã¯ããŒãé åã«ç¢ºä¿ããé
åããã€ã³ã¿ãçµç±ããŠæ±ããŸãã
ãã®å Žåãå€éšåç §ãå®çŸ©ããæã¯ã
1.ããã ãã¡ã€ã«ã«ãã€ã³ã¿ãŒã«ãã宣èšãèšè¿°
2.å€éšåç
§ãããã¡ã€ã«ãå®çŸ©ãããã¡ã€ã«ã§ã¯
ããã ãã¡ã€ã«ãèªã¿èŸŒãã
3.å®çŸ©ãããã¡ã€ã«ã§ã¯ãããŒãããé
åã確ä¿ããéšåãš
äºåŸã«è§£æŸããéšåã®èšè¿°ãå«ããã
4.åç
§ãããã¡ã€ã«ã§ã¯ãé
åæŒç®åã䜿ã£ãŠ
é
åã¹ã¿ã€ã«ã§å©çšããã
ãšããããã«ããŠããŸããããããçç±ã«ã
1. é åãåçã«ç¢ºä¿ããããšã«ããå¿ èŠã«å¿ããŠå€§ããã調æŽã§ããã
2. äžæ¬¡åç §ãšäºæ¬¡åç §ã®é床差ã¯ã»ãšãã©æããããªãã
ãšããã®ãæããŠãããŸãã
äŸ
foo.h - å
±éããã ãã¡ã€ã«
~~~~~
/* å€éšåç
§ã®ããã®å®£èš */
extern int *a;
extern size_t a_size;
foo.c - å®çŸ©ããµãããã¡ã€ã«
~~~~~
/* å®çŸ©ãšå®£èšã®ççŸãæ€åºã§ããããã«ããããã«
å€éšå®£ãå«ãŸããããã ãã¡ã€ã«ãåã蟌ã */
#include "foo.h"
/* å®çŸ© */
int *a;
size_t a_size;
main() {
:
/* å©çšåã«åçç¢ºä¿ */
a = malloc(sizeof *a * a_size);
:
bar();
:
for(i = 0; i < a_size; i++)
printf("%i,",a[i]);
:
/* å©çšåŸã«è§£æŸ */
free(a);
:
}
bar.c - å€éšåç
§ãããã¡ã€ã«
~~~~~
#include "foo.h"
bar() {
:
/* èšè¿°ã¹ã¿ã€ã«ã¯é
å颚 */
for(i = 0; i < a_size; i++)
a[i] = i;
:
}
In article <6npfns$5im$1...@dnsis1.tch.sharp.co.jp>,
naka...@video.yaita.sharp.co.jp (NAKAMURA Takahiro) writes:
> int c[10][100];
>ã«ãããŠãc[10]ã®åããšããã®ã¯æ®éã®èãæ¹ãªã®ã§ããããïŒ
æ®éã§ããäŸãã°ã
p = &c[i]; ãŸã㯠p = c + i;
ãšãã代å
¥ãè¡ãªãããã«ã¯ãp ã¯ã©ã®ãããªåãæããªããã°ãªããª
ãããèããæã«å¿
èŠã§ãã
>ç§ã¯ä»ãŸã§c[10][100]ã¯ãããŸã§ãã2次å
ã®é
åããšãã
>æããããªãã£ãã®ã§ããã
ææ³äžã¯ã倿¬¡å
é
åãã¯ãªããâint c[10][100]âã®åã¯ããintå
ã 100å䞊ãã é
åãã 10å䞊ãã é
åãã§ãã
> ãªã«ããc[10][100]ãšå®£èšããå Žåããc[10]ãšããé
åã®100åã®é
åã
>ãšããã®ãã¡ã¢ãªäžã«ç¢ºä¿ããåŠçç³»ãèŠãããšããªãã£ãã®ã§ã
ãc[10]ãšããé
åã®100åã®é
åãã§ã¯ãªãããint [100] ãšããé
å
ã 10å䞊ãã é
åãã§ãã
ã³ã³ãã€ã©ãŒã®åŠçã«ã€ããŠã§ãããç§ãèªãã ããšãããã³ã³ãã€ã©ãŒ
ã§ã¯ãå
éšã§ã¯ãé
åã®é
åããšããŠæ±ã£ãŠããŸããããããé åã確
ä¿ããã¢ã»ã³ãã©åœä»€ãåºãæïŒç¹ã«åæå€ããªãå ŽåïŒã¯ãé
åå
šäœ
ãäžã€ã®é£ç¶ããé åãšããŠåœä»€ãåºåããŸãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
In article <6nqjm0$a...@utogw.gssm.otsuka.tsukuba.ac.jp>,
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> Cã®èŠæ Œæžã¯åãããŸããããäžè¬ã®çšèªã¯pããã€ã³ã¿ã®ãšã*pã¯å€
>æŽå¯èœãªå·ŠèŸºå€ã§ãããããããã倿Žå¯èœã§ãªã巊蟺å€ãªããŠçšèªã¯
>ä»ã¯ãããŠèããŸããã
äžè¬ã®çšèªã¯åãããŸãã:-pãã倿Žå¯èœãªå·ŠèŸºå€ïŒmodifiable
lvalueïŒã¯èŠæ Œã§å®çŸ©ãããŠããŸãã*p ã倿Žå¯èœãåŠãã¯ã*p ã®å
ã«äŸããŸãã
>ãããconstãšé åãšã§ã¯äºæ ãéããŸãããã
äºæ
ã¯éããŸããã*p ã const ã§ãã£ãŠããé
åã§ãã£ãŠãã倿Žå¯
èœãªå·ŠèŸºå€ã§ã¯ãªãããšã¯å€ãããŸããã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
ka...@pfu.co.jpãã:
> äžè¬ã®çšèªã¯åãããŸãã:-pãã
ã¯ãã¯ããCã®èŠæ Œæžã¯ãããšãé¢çœããã ãšããããšã¯ããåãã
ãŸãããã©ãããå
¥æã§ããã§ããã? (ãã£ã±1åè²·ããªããšâŠ)
> äºæ
ã¯éããŸããã*p ã const ã§ãã£ãŠããé
åã§ãã£ãŠãã倿Žå¯
> èœãªå·ŠèŸºå€ã§ã¯ãªãããšã¯å€ãããŸããã
ãããèŠæ ŒæžãšããŠããã¹ãæ 床ã§ãããŸãã
ããçå±±ããã«èããŠããŸããŸããããèŠæ Œæžã«ããã° :-)
int a[100];
int *p = a;
ãšããå Žåã2è¡ç®ã«åºãŠæ¥ãaã®å·ŠèŸºå€ã¯äœåãªãã§ããããæåãã
(int*)ãªã®ãæåã¯äœãå¥ã®åã§ããã(int*)ã«å€æãããã®ãããã
åŸè
ãªã倿ãããåã®åã¯äœåãªã®ãããšããã®ããã®ãšããæ©ã¿ã®
çš®ãªãã§ãã
aãã®ãã®ãé ååãšããã®ã¯ããã§ããã®ã§ãã ä¹ é
çŸåšã®C仿§ã«ã€ããŠãint a[10];ã§aãè©äŸ¡ããæã«
ã»int*åã®å€ãçããã®ã
ã»ãããšãããšããšaã®å³èŸºå€ãšããŠã®åã¯int*ã ã£ãã®ã
ã®éãã«ã€ããŠã§ããããç§ã®èãã§ã¯ããã¯ãåè
ã説æã¢ãã«ãšããŠæè§£
ã§ãããCã®ä»ã®æ¯ãèããšãã銎æã¿ãæè§£ã§ãããšæããŸãã
ãŸãé
åãããããããå®è¡æã«åç
§ããããšã§å
é èŠçŽ ãæããã€ã³ã¿å€ã
åãåºãããããšããåè
ã¯å³ã«ãæžããããã§ãããåŸè
ã¯ã³ã³ãã€ã«æã®
æ§é ã念é ã«çœ®ãå¿
èŠããã£ãŠãå®è¡æã€ã¡ãŒãžãæãã«ããã巊蟺å€/å³èŸº
倿Šå¿µããèªäœã®é£ããããããŸã£ãŠãç§ã«ã¯åãå
¥ããããã§ãã
å説ããããŸãããã奜ã¿ã ãæ £ããŠããããšèšãã ãã«ããŸã(^^;
ueh...@gate.biz.ntts.co.jpãã:
> ãŸãé
åãããããããå®è¡æã«åç
§ããããšã§å
é èŠçŽ ãæããã€ã³ã¿å€ã
> åãåºãããããšããåè
ã¯å³ã«ãæžããããã§ãããåŸè
ã¯ã³ã³ãã€ã«æã®
> æ§é ã念é ã«çœ®ãå¿
èŠããã£ãŠãå®è¡æã€ã¡ãŒãžãæãã«ããã巊蟺å€/å³èŸº
> 倿Šå¿µããèªäœã®é£ããããããŸã£ãŠãç§ã«ã¯åãå
¥ããããã§ãã
ããã§ããããçãããããšãããããŸã ä¹ é
ueh...@gate.biz.ntts.co.jpãã:
> å説ããããŸãããã奜ã¿ã ãæ
£ããŠããããšèšãã ãã«ããŸã(^^;
ãã£ãã :-) ä¹ é
P.S. ãã¡ããã奜ã¿ã ãæ £ããŠããã«ç°åã¯ãããŸããã
Jam Marukawa <j...@pobox.com> wrote:
> åã誀解ããŠãã®ã§ãç°¡åãªãŸãšããã
> ku...@gssm.otsuka.tsukuba.ac.jp wrote:
> > ãŸã€ããšãã:
> >> ããŒãïŒé
·ããªããšã¯ããããŸãããïŒèšæ¶ã«ããã°pccã®é ããã
> >> ãã ã£ããããªæ°ãããŸãïŒå°ãªããšãANSI以åã«ã¯ã§ããªãCã³ã³
> >> ãã€ã©ã¯ãªãã£ãããããªãããªïŒ
> > ãããªãã§ãã? æžããããšãªãããåãããâŠ
> > ããã§çŸåšã&aã¯èšèªä»æ§äžã¯æ£ããã®? ä¹
é
> æ£ãããã©ããã«ã€ããŠã¯ãè²ã
ãšè©±ãæãã£ãŠãã®ã§ãããšããŠã
> 以äžã«äŸã ãæããšããŸããåã¯æã®pccã§"&a"ã"int *"ãšããŠæ±ã
> ããšããèŠãããã£ãŠãä»ãããã ãšæã£ãŠããŸãããANSIã§ã¯
> "int (*)[]"ãªãã§ãããå匷ã«ãªããŸããã
> main()
> {
> int **p;
> int *q;
> int (*r)[100];
> int a[100];
> p = &a; /* warning: assignment from incompatible pointer type */
> q = &a; /* warning: assignment from incompatible pointer type */
> r = &a;
> p = a; /* warning: assignment from incompatible pointer type */
> q = a;
> r = a; /* warning: assignment from incompatible pointer type */
> }
-- ããã
ãªããªãããŸãäŸãã§ãããã§ãïŒååãå€ãããªããŠå€§ãããããšãèšã
ã€ããã¯æ¯é ãããŸãããïŒé»æ¿ã¯æã¯é»ã ãã ã£ããšããããšã¯ïŒå·ŠèŸºå€
ãæã¯ïŒä»£å
¥å¯èœã®ãã®ã ãã ã£ããšãïŒïŒ
ãããïŒååã®ä»ãæ¹ãšããã®ã¯éåžžã«å€§åãªãã®ãšã¯æã£ãŠããŸãããã®
åéã«éããïŒäœãã®æ¬ãèªããšãèªåã®æã£ãŠããååã®ã€ã¡ãŒãžãåº
ã«çè§£ãé²ããã±ãŒã¹ïŒç§ã®å ŽåïŒãã»ãšãã©ã§ããïŒäœè
ã®æã£ãŠããã€
ã¡ãŒãžãšé£ãéãæïŒåŸã
ã«ããŠèª€è§£ãšãçè§£äžèœã«é¥ããŸããïŒã ããïŒ
倩æèã®äººã®æžããŠããæ¬ã¯èªã¿ã«ãããïŒ
âããªããžã§ã¯ãæç€ºåŒãâãããªããªãããååã§ãããç§ã®ã€ã¡ãŒãžã«ããã¿
ãªã§ãã
>
>èŠçŽ ã®åã«ãããŸããäºæ¬¡å
é
åã®å ŽåãèŠçŽ ã¯ãŸãé
åã§ãããã倿Žå¯èœ
>ãªå·ŠèŸºå€ã§ã¯ãããŸããã
>
ãïŒãããã
>
>>>ã»int f(int i); ãšå®£èšããã f ã¯ã颿°åã§ã巊蟺å€ã§ã¯ãªãã
>
>p ã¯å€æŽå¯èœãªå·ŠèŸºå€ã ããåé¡ãããŸããããåé
&æŒç®åã§ã巊蟺å€ã§ã¯
>ãªã f ã®ã¢ãã¬ã¹ãåãåºããŠããããšãååãšèšã£ãŠããã®ã§ããããã
>
ã¯ãïŒãã®ããšãæããŠããŸãããã§ããŸããŸãïŒåéãã§ãããäžã«æžãããŠãã
éããªãã®åé¡ããªãã®ã§ããã
>JIS C ã®ã6.3.3.2 ã¢ãã¬ã¹åã³éæ¥æŒç®åãã®å¶çŽã«ã¯ã
>
> åé
&æŒç®åã®ãªãã©ã³ãã¯ã颿°æç€ºåãåã¯ããããã£ãŒã«ãã§ããª
> ã registerèšæ¶ã¯ã©ã¹æå®åä»ãã§å®£èšãããŠãããªããªããžã§ã¯ãã
> æã瀺ã巊蟺å€ã§ãªããã°ãªããªãã
>
>ãšãããŸãããªããžã§ã¯ãåã¯å·ŠèŸºå€ã§ãªããšãããŸãããã颿°åã¯é¢æ°
>æç€ºåã§ããããåé¡ãããŸããã
>
>
>ããªããžã§ã¯ãããšããªããžã§ã¯ãåããæ··åãããŠããããã§ããã
>
ãã®ããã§ããç§ã¯ïŒãªãã·ã§ã¯ãåãšããã®ã¯ãªãã·ã§ã¯ãã«ã€ããããšã
å¯èœã§ããå
šãŠã®åã®éåå
šäœãèšã£ãŠãããšæŒ ç¶ãšèããŠããŸããã
>i ã¯ããªããžã§ã¯ãã§ããããªããžã§ã¯ãåã® int ãåãšããŠæã¡ãŸãã
>宿° 3 ã¯ãã¡ã¢ãªäžã«é åãåããªãããããªããžã§ã¯ãã§ã¯ãªãããã©ã
>ãªããžã§ã¯ãåã® int ããåãšããŠã¯æã£ãŠããããšè§£éãããã§ãããã
>åŒ i+3 ã®å€ããã¡ã¢ãªäžã«é åãåããªãããããªããžã§ã¯ãã§ã¯ãªããã
>ã©ããªããžã§ã¯ãåã® int ãåãšããŠæã£ãŠããã
>
âãªããžã§ã¯ãã§ã¯ãªãããã©ããªããžã§ã¯ããè¿ããã®åã int ã§ãããâãªã
ç§ã®é ã§ãçè§£ã§ããã®ã§ããããªãã·ã§ã¯ããè¿ããïŒãªã®ã§ïŒãã®è§£éã
ã§ããŸãè¡ããªãã®ã¯åããã®ã§ãããã§ïŒããŸã ãã®éšåã¯ïŒç¶æ
ã§ãã
>register倿°ãã¡ãã£ãšã²ã£ããããŸãããã6.3.3.2 ã¢ãã¬ã¹åã³éæ¥æŒç®
>åãã®å¶çŽãããregister倿°ã¯ããregisterèšæ¶ã¯ã©ã¹æå®åä»ãã§å®£èšã
>ãããªããžã§ã¯ããã§ããããšè§£éã§ããŸããã¬ãžã¹ã¿ãèšç®æ©ã®ã¡ã¢ãªã®äž
>çš®ã§ãããé åãåã£ãããšã«ãªãããã ããæ¬åœã®ã¡ã¢ãªãšã¯ã¢ãã¬ãã·ã³
>ã°ã®æ¹åŒãå
šãç°ãªããããåé
&æŒç®åã®ãªãã©ã³ãã«ã¯ã§ããªããããšèš
>ã£ãŠããã¿ããã§ããããããã£ãŒã«ããåæ§ã
>
ããŒãïŒã©ããåã«ã€ããŠã¯åã ããèããŠããå
ã¯ïŒçè§£ã§ãããã«ãªãã
ãã§ãããã®ä»ã®ãã®ã®å®çŸ©ããã£ãããšããããããšã®é¢ä¿ã«ãããŠïŒå
šäœ
ãšããŠå
šãççŸã®ãªã説æãå¿
èŠãªããã§ããïŒããã¯ïŒç§ã«ãšã£ãŠã¯ãŸã ãŸã
å
ã®è©±ã§ããïŒ
>--
>忬æºåœŠ saka...@sm.sony.co.jp
>ä¿®è¡äžã®ä¹ éã§ãã
ã²ããããã³ã°ããã(_ _;
>> const ã¯åã®äžéšïŒå修食åïŒã§ãããstatic ã¯èšæ¶ã¯ã©ã¹ã§ãã
> ãã£ã±ããããªãã§ãããäžè¬ã«ãã¹ãŠã®åã«ã€ããŠå¯Ÿå¿ããconst
>ããããšæã£ãŠããã®ã§ããããã
ããã§ãé åãšé¢æ°ãäŸå€ã«ãªã£ãŠããŸããã§ãã:-(
颿°ïŒé¢æ°ãžã®ãã€ã³ã¿ãŒã«éãïŒã¯å·ŠèŸºå€ã§ã¯ãªãã®ã§æå³ããªããš
ããããšã§ãããããã§ããããã
é åã®å Žåã¯ã
typedef TYPE[10];
const TYPE array;
ãšããŠããé åã§ã¯ãªãããã®èŠçŽ ã const ã«ãªã£ãŠããŸããŸãã
ãã£ãšããæ§é äœïŒå
±çšäœã®å Žåããæ§é äœïŒå
±çšäœèªäœã const ã«
ãããšãã®ã¡ã³ããŒã const ã«ãªãã®ã§ãé
åèªäœã const ã«ã§ãã
æå³ã¯ãããŸãããã
const ãåã®äžéšã§ããããšãç¹ã«æèãããããã®ã¯ã
const int **ppci;
int **ppi;
ppci = ppi;
ãšããä»£å ¥ãçŠæ¢ãããŠãããšããç¹ã§ã¯ãªãããšæããŸãã
ïŒã§ãâpci = piâã¯çŠæ¢ãããªãããã
> ãããŸãåã«ããããçã蟌ãã®ã¯å¥œãããªã ä¹ é
ã©ã®ãããªå±æ§ãšããŠæãããã®ãããã®ã§ããããã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
æ¥æ¬ã§ã¯æ¥æ¬èŠæ ŒåäŒããå
¥æããã®ã ãšæããŸãã
http://www2.jsa.or.jp/
èµ€åã®æ¥æ¬èŠæ ŒåäŒäžéã®å£²åºã§ãè²·ããŸãã
Ammendmentã®é¡ã¯èãããã«é«ãâŠã
é
åããªããžã§ã¯ãã§ã¯ãªããåŸã£ãŠå·ŠèŸºå€ã§ããªãå Žåãããäº
ãããªã@å¯å£«éããããã¡ãŒã«ã«ãŠæããŠé ããã®ã§ä»¥äžã«åŒçšã
ããŠé ããŸãã
Mon, 6 Jul 1998 20:06:39 +0900 (JST)ã«
TANAKA Keishiro <k...@lp.nm.fujitsu.co.jp>ããã¯æžããŸãã
|ããªã@å¯å£«éã§ãã
|
|埡åèãŸã§ã§ããã
|fj.comp.lang.cã§ã®è°è«äžæ°ã«ãªãç¹ããããŸããã®ã§ãã¡ãã埡åè
|ãŸã§ã«ãç¥ããããŸãã
|>é
åã¯ãªããžã§ã¯ããªã®ã§(^o^)ãlvalueã§ãã
|
|é
åã¯ãlvalueã§ãªãå ŽåãããããŸãã
|
|struct tag {
| int a[10];
|};
|
|main()
|{
| struct tag f();
| int i;
| i = f().a[10];
| f().a[10] = 0;
|}
|
|ãã®å Žåãf().aã¯é
åã§ãããf().aã¯rvalueã§ãã(rvalueãšããåèªã¯ä»
|æ§ã«ã¯åºãŠæ¥ãªãã£ããšæããŸããã)
確ãã«ç²ç¹ã§ããã
ãé
ååãªããžã§ã¯ãã¯ãªããžã§ã¯ããªã®ã§lvalueã§ãããã«èšæ£ããŸãã
è£è¶³ããããšãããããŸããïŒããªãïŒ å¯å£«éãã
In article <6nqf7l$ji$1...@news.naruto-u.ac.jp>,
"keizi kounoike" <koun...@naruto-u.ac.jp> writes:
>>ã»int f(int i); ãšå®£èšããã f ã¯ã颿°åã§ã巊蟺å€ã§ã¯ãªãã
>ãšããããšã¯ïŒp=&fã¯ååã«ãªããšããããšã§ãããããããããïŒ ãp ã¯ã
K&R C ã§ã¯ã颿°åãåŒäžã§äœ¿ãããæïŒãã ãã颿°åŒåºããé€ãïŒ
ã¯ããã®é¢æ°ãžã®ãã€ã³ã¿ãŒåã«å€æãããã®ã§ã& ãä»ããããšãã§
ããŸããã§ããã
ANSI C ã§ã¯ã颿°åãæã€åŒã¯ã颿°æç€ºåïŒfunction designatorïŒã
ãšåŒã°ããŸãã颿°æç€ºåã¯ãsizeof åã³åé
& ã®ãªãã©ã³ãã«ãªã
å Žå以å€ã¯ããã®é¢æ°ãžã®ãã€ã³ã¿ãŒã«å€æãããŸãã
sizeof ã®ãªãã©ã³ãã«é¢æ°æç€ºåãæå®ãããå Žåã¯ãsizeof ã«èš±ã
ããåã«ãªããªãã®ã§ãçµæçã«ãšã©ãŒã«ãªããŸã
åé
& ã®ãªãã©ã³ãã«é¢æ°æç€ºåãæå®ãããå Žåã¯ããã®é¢æ°ãžã®
ãã€ã³ã¿ãŒãçµæã«ãªããŸããã€ãŸããåé
& ããªãå Žåãšåãçµæ
ã«ãªããŸãã
>ãªãã»ã©ïŒç°¡åã«ã¯ãããªããã®ãªãã§ããããšããã§ïŒäžã®i+3ãªããŠã®ã¯
>â巊蟺å€ã§ãªã->&ãåºæ¥ãªãïŒã¢ãã¬ã¹ãåããªããïŒ->ãªãã·ã§ã¯ãã§ãªããâ
>ãšãªããããªæ°ãããŸããïŒäžåããã®ANCI C仿§3.1.2.5ãTypesã®ç޹ä»ã«
>ããã°ïŒåã®çš®é¡ã¯å€§ããåãããšãªããžã§ã¯ãåïŒé¢æ°åïŒäžå®å
šåã«åé¡
>ãããããã§ããïŒãã®å€§åé¡ã®ã©ãã«å
¥ããã®ãªãã§ããããã
ãªããžã§ã¯ãåã«ãªããŸãã
ãªããžã§ã¯ãåã¯ãããªããžã§ã¯ãã«å¯ŸããŠä»ããããåãã§ã¯ãªããŠã
ããªããžã§ã¯ããå²ä»ããã«å¿
èŠãªæ
å ±ãæã£ãŠããåãã§ãã
äžå®å
šåã¯ãããªããžã§ã¯ããå²ä»ããã«å¿
èŠãªæ
å ±ãæã£ãŠããªãåã
ã§ããå
·äœçã«ã¯ã
>äžå®å
šå:
> void, 倧ããã®åãããªãé
åå,
> å
容ã®åãããªãæ§é äœå, å
容ã®åãããªãå
±çšäœå
ãšãªããŸãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
>> ãããšãc[10][100]ã«ã€ããŠããc[10]ã®åããšããèšèãåºãŠæ¥ã
> ããšãã°Pascalã ãš c: array[1..10] of integer; ãšãã®ããã«ã
> ããã c: (*int[])[100]; ãªããŠã®ãããŸãã¡âŠ ä¹ é
>P.S. ãã¿ã©ã¡ã§æžããã®ã§ããæ£ããåæå®ã«ãªã£ãŠãŸã? å
šç¶ãã
> ããªãâŠ
ãã®å Žåãªãâc: (int[10])[100]âã§ãããããåé·ãª () ãåãé€
ããšâc: int[10][100];âã:-)
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
ueh...@po.ntts.co.jpãã:
> æ¥æ¬ã§ã¯æ¥æ¬èŠæ ŒåäŒããå
¥æããã®ã ãšæããŸãã
> http://www2.jsa.or.jp/èµ€åã®æ¥æ¬èŠæ ŒåäŒäžéã®å£²åºã§ãè²·ããŸãã
> Ammendmentã®é¡ã¯èãããã«é«ãâŠã
ããŒããããè±èªã§ããããçŽèŒžå ¥ãšããªãã®ããª ä¹ é
ueh...@po.ntts.co.jpãã:
> 確ãã«ç²ç¹ã§ããããé
ååãªããžã§ã¯ãã¯ãªããžã§ã¯ããªã®ã§
> lvalueã§ãããã«èšæ£ããŸãã
ãµãæ·±ããã⊠^_^; ä¹ é
ka...@pfu.co.jpãã:
> ã²ããããã³ã°ããã(_ _;
ããããžãªãã§ãããè¬ããªãã§ãã ããã
> ããã§ãé åãšé¢æ°ãäŸå€ã«ãªã£ãŠããŸããã§ãã:-(
> 颿°(颿°ãžã®ãã€ã³ã¿ãŒã«éã)ã¯å·ŠèŸºå€ã§ã¯ãªãã®ã§æå³ããªããš
> ããããšã§ãããããã§ããããã
ã¯ãã
> é
åã®å Žåã¯ã
> typedef TYPE[10];
> const TYPE array;
> ãšããŠããé
åã§ã¯ãªãããã®èŠçŽ ã const ã«ãªã£ãŠããŸããŸãã
ãªãã»ã©ã
> ãã£ãšããæ§é äœ/å ±çšäœã®å Žåããæ§é äœ/å ±çšäœèªäœã const ã«
> ãããšãã®ã¡ã³ããŒã const ã«ãªãã®ã§ãé
åèªäœã const ã«ã§ã
> ãæå³ã¯ãããŸãããã
ããã§ãconstæ§é äœ/å
±çšäœã®ã¡ã³ãã«ãã€ã³ã¿ããã£ãå Žåããã®
ãã€ã³ã¿å€ã¯æžãæããããŸãããããã€ã³ã¿ãæãå
ã¯âŠæžãæããŠ
ããããã§ããããâŠ
> const ãåã®äžéšã§ããããšãç¹ã«æèãããããã®ã¯ã
> const int **ppci;
> int **ppi;
> ppci = ppi;
> ãšãã代å
¥ãçŠæ¢ãããŠãããšããç¹ã§ã¯ãªãããšæããŸãã
> #ã§ãâpci = pi"ã¯çŠæ¢ãããªãããã
ããã©ãããèŠåãªãã§ãã? ããŒãâŠ
> ã©ã®ãããªå±æ§ãšããŠæãããã®ãããã®ã§ããããã
ããã§ããã倿°ãšã宿°ãšããªãã©ã«ããŸãšããŠããªããžã§ã¯ãã
ãšåŒã¶ããšã«ããŠ(ãããèŠæ Œæžãšå
šç¶å¥ã®æå³)ãããã«åçš®å±æ§ãä»
äžããããã®äžéšãšããŠåãã€ããããªããŠã®ã§ã©ãã§ãããã
仿ãã€ããã ãã ããçªã£èŸŒãŸãªãããã« ä¹ é
KATAYAMA Yoshio wrote in message ...
>çå±±ïŒ ïŒ°ïŒŠïŒµã§ãã
>
>ãªããžã§ã¯ãåã«ãªããŸãã
>
>ãªããžã§ã¯ãåã¯ãããªããžã§ã¯ãã«å¯ŸããŠä»ããããåãã§ã¯ãªããŠã
>ããªããžã§ã¯ããå²ä»ããã«å¿
èŠãªæ
å ±ãæã£ãŠããåãã§ãã
>
ãšããããšã¯ïŒi+3ã¯ãªããžã§ã¯ããšèããŠããã®ã§ããã
>>ãªããžã§ã¯ãåã¯ãããªããžã§ã¯ãã«å¯ŸããŠä»ããããåãã§ã¯ãªããŠã
ããããããããããããããããããããããããããã^^^^^^^^^^
>>ããªããžã§ã¯ããå²ä»ããã«å¿
èŠãªæ
å ±ãæã£ãŠããåãã§ãã
>ãšããããšã¯ïŒi+3ã¯ãªããžã§ã¯ããšèããŠããã®ã§ããã
i+3 㯠int åãšãããªããžã§ã¯ãåãåŸ
ã¡ãŸããããªããžã§ã¯ãã§ã¯
ãããŸããã
ããªããžã§ã¯ãåãæã£ãŠãããã®ããªããžã§ã¯ãããªã®ã§ã¯ãããŸã
ãããªããžã§ã¯ãã§ãªããŠãããªããžã§ã¯ãåãæã£ãŠãããã®ããã
ãŸããäŸãã°ã1 ã¯ãªããžã§ã¯ãã§ã¯ãããŸããããint åãšãããªã
ãžã§ã¯ãåãæã¡ãŸãã
ãªããžã§ã¯ãã¯ã倿°ãªã©ã®å€ãæ ŒçŽããããã®å Žæã®ããšã§ããi+3
㯠1 ãšã 1000 ãšãã£ãå€ã«ãªãã§ããããããã®å€ãæ ŒçŽããå Žæ
ã¯ãããŸããïŒæŒç®ãçµãã°æ¶ããŠããŸãïŒã®ã§ããªããžã§ã¯ãã§ã¯ãª
ãã®ã§ãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
çå±±ããã¯ããi+3 ããªããžã§ã¯ãåã«ãªãããšèšã£ãŠããŸããã
ãi+3 ã¯ãªããžã§ã¯ãã§ããããšã¯èšã£ãŠããŸããã
i+3 ã¯ãåŒãã§ãã
ãåŒãã¯äžè¬ã«ã次ã®ããã«åé¡ã§ããŸãã
(1) ãªããžã§ã¯ããæã瀺ãèå¥å(倿°å) -- ãªããžã§ã¯ã
(2) 宿° -- ãªããžã§ã¯ãã§ã¯ãªã
(3) æååãªãã©ã« -- ãªããžã§ã¯ã
(4) 颿°ãæã瀺ãèå¥å(颿°å) -- ãªããžã§ã¯ãã§ã¯ãªã
(5) äžèšãæŒç®åã§ã€ãªãã ãã® -- ãªããžã§ã¯ããã©ããã¯æŒç®ã«ãã
i+3 ãšããåŒã¯ã(5)ã§ãããæŒç®ã®çµæããå€ããšãåãããã¡ãŸãããã
ãããªããžã§ã¯ãã§ã¯ãããŸããããªããžã§ã¯ãã®å®çŸ©ã§ããããèšæ¶åã®é
åãããšããšã¯éããªãããã§ãã
*(p+3) ãšããåŒã¯ã(5)ã§ããã巊蟺å€ã§ãããããªããžã§ã¯ããæã瀺ãåŒ
ãšããããšã§ããªããžã§ã¯ããšãã£ãŠãããã§ãããã
--
忬æºåœŠ saka...@sm.sony.co.jp
>Mon, 6 Jul 1998 20:06:39 +0900 (JST)ã«
>TANAKA Keishiro <k...@lp.nm.fujitsu.co.jp>ããã¯æžããŸãã
> |struct tag {
> | int a[10];
> |};
> |
> |main()
> |{
> | struct tag f();
> | int i;
> | i = f().a[10];
> | f().a[10] = 0;
> |}
> |
> |ãã®å Žåãf().aã¯é
åã§ãããf().aã¯rvalueã§ãã(rvalueãšããåèªã¯ä»
> |æ§ã«ã¯åºãŠæ¥ãªãã£ããšæããŸããã)
èè¶³ããç¥ããŸãããããã
f().a 㯠lvalue ã§ã¯ãããŸããã®ã§ããã®åŒã¯é
ååã®ãŸãŸã§ããã€
ã³ã¿ãŒåã«å€æãããŸãããïŒISO/IEC 9899 §6.2.2.1ïŒ
ãããã£ãŠã[] æŒç®åãé©çšããããšãã§ããŸãããïŒå§6.3.2.1ïŒ
ïŒä»ã«ãå€ãªãšãããããã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
> ããã§ãconstæ§é äœ/å
±çšäœã®ã¡ã³ãã«ãã€ã³ã¿ããã£ãå Žåããã®
>ãã€ã³ã¿å€ã¯æžãæããããŸãããããã€ã³ã¿ãæãå
ã¯âŠæžãæããŠ
>ããããã§ããããâŠ
ãã€ã³ã¿ãŒãæããŠããå
ã倿Žå¯èœãªå·ŠèŸºå€ã§ããã°æžãæããããŸ
ããäŸãã°ã
const struct {
int *pi;
const *pci;
} x = { é©åœãªåæå€ };
ã§ã¯ã*x.pi ã¯æžãæããããŸããã*x.pci æžãæããããŸããã
>> const ãåã®äžéšã§ããããšãç¹ã«æèãããããã®ã¯ã
>> const int **ppci;
>> int **ppi;
>> ppci = ppi;
>> ãšãã代å
¥ãçŠæ¢ãããŠãããšããç¹ã§ã¯ãªãããšæããŸãã
>> #ã§ãâpci = pi"ã¯çŠæ¢ãããªãããã
> ããã©ãããèŠåãªãã§ãã? ããŒãâŠ
ãã€ã³ã¿ãŒã©ããã®åçŽä»£å ¥ã«ãããå¶çŽã¯ã
both operands are pointers to qualified or unqualified
version of compatible types, and the type pointed to by the
left has all the qualifiers of the type pointed to by the
right;
ãšãªã£ãŠããŸãã
pci = pi ã§ã¯ãæããŠããå
ã const int ãš int ãªã®ã§ããã®æ¡ä»¶
ã«é©åããŸãã
ããããppci = ppi ã§ã¯ãæããŠããå
ã const int * ãš int * ãª
ã®ã§ããã®æ¡ä»¶ã«é©åããŸãããããã¯ããã€ã³ã¿ãŒåã compatible
ã§ããããã«ã¯ããã€ã³ã¿ãŒãæããŠããå
ã®åãåãããã«å修食ã
ããŠããå¿
èŠãããããã§ãã
ïŒ int * const ãš int * ãªãããã®æ¡ä»¶ã«é©åããŸã
>> ã©ã®ãããªå±æ§ãšããŠæãããã®ãããã®ã§ããããã
> ããã§ããã倿°ãšã宿°ãšããªãã©ã«ããŸãšããŠããªããžã§ã¯ãã
>ãšåŒã¶ããšã«ããŠ(ãããèŠæ Œæžãšå
šç¶å¥ã®æå³)ãããã«åçš®å±æ§ãä»
>äžããããã®äžéšãšããŠåãã€ããããªããŠã®ã§ã©ãã§ãããã
ãããã©ã®ããã«è¡šãã°ãç°¡æœã«ãã€åããæããªãããåé¡ã ãšæã
ãŸããäŸãã°ã
int * const (* volatile p)[10];
ã®ãããªã®ã衚ãããšããæãconst ã volatile ãåãšåãé¢ãã衚
çŸã«ããã®ã¯é£ããã®ã§ã¯ãªãããšæããŸãã
ïŒ C ã«æ £ãéããŠãçºæ³ã®è»¢æãã§ããªãã ãããïŒèªå
> 仿ãã€ããã ãã ããçªã£èŸŒãŸãªãããã« ä¹ é
çªã£èŸŒãã§ããŸããŸããã(_ _)
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
In article <KATE.98J...@yamato.trad.pfu.co.jp>
ka...@pfu.co.jp (KATAYAMA Yoshio) writes:
> èè¶³ããç¥ããŸãããããã
> f().a 㯠lvalue ã§ã¯ãããŸããã®ã§ããã®åŒã¯é
ååã®ãŸãŸã§ããã€
> ã³ã¿ãŒåã«å€æãããŸãããïŒISO/IEC 9899 §6.2.2.1ïŒ
>
> ãããã£ãŠã[] æŒç®åãé©çšããããšãã§ããŸãããïŒå§6.3.2.1ïŒ
ãã£ããããšãããGCCã§-ansi -pedanticãããšä»¥äžã®èŠåãåºãŸãã
(IRIXã®ccã ãšãšã©ãŒã§ã)ã
a.c:17: warning: ANSI C forbids subscripting non-lvalue array
GCCæ¡åŒµãšããŠ
|Non-Lvalue Arrays May Have Subscripts
|=====================================
|
| Subscripting is allowed on arrays that are not lvalues, even though
|the unary `&' operator is not. For example, this is valid in GNU C
|though not valid in other C dialects:
ãšããããšãã§ããã¿ããã§ããã
G++ã ãšC++ã®ãäžæãªããžã§ã¯ããæ±ãã¿ããã§ã-ansi -pedantic
ããŠãèŠåãã§ãŸããã§ããã
# äžæãªããžã§ã¯ãã®ãªããžã§ã¯ãã£ãŠã¯ã©ã¹ã®ãªããžã§ã¯ãã
# ãšããæå³ããšæã£ãŠãŸããããããã§ã¯ãªããŠCã®æå³ã§ã®
# ãªããžã§ã¯ããªã®ã§ããã
--
§ NTTSâFT ãã¥ãŒããžãã¹äºæ¥æ¬éšç¬¬2ãããžã§ã¯ã äžå æœ€äº Â§
ka...@pfu.co.jpãã:
> 巊蟺å€ãšå€ãåæã«æã€ãã®ã¯ååšããŸããã
> ïŒããããåç¥ãªãã®ã誀解ã®å§ãŸãïŒ
ã©ãããã®ããã§ããã
ãåããªããšãããããint x; ãšãæ®éã®å€æ°ã ãšãx = â; ã ãš
å·Šå€å€ã䜿ãããŠå€æ°xã«å€ãå
¥ããâ = x; ã ãšå³èŸºå€(ãšããã®ã¯x
ã«æ ŒçŽãããŠãå€)ã䜿ãããããšããã®ãæ®éã®ããã°ã©ãã³ã°èšèª
çšèªã ãšæã£ãŠããã®ã§(ã¡ããã®?)ããšã«ããCã®èŠæ Œçšèªã¯å
šç¶éã
ãšããã®ã¯åãããŸããã
> 巊蟺å€ãšã¯ããªããžã§ã¯ãåå㯠void åãé€ãäžå®å
šåãæã€åŒã§ã
> ãªããžã§ã¯ããæç€ºãããã®ã§ãã
ã¯ãã¯ãã
> ã«ãã£ãŠãå€ã«å€æããããã倿ãããã«å·ŠèŸºå€ã®ãŸãŸã§ãããã§ãã
ãã®ã倿ããšããçšèªããå€ãå å·¥ããããšã§ã¯ãªãã倿°ããã®
ãŸãŸã«ããšããã¢ãã¬ã¹ãåãããã倿ã®ãããªããã ã£ãããæ®é
ã®å€æ°ã ãšã¢ãã¬ã¹ãžã®åæãªã倿ãã¯èµ·ããªããã©é
ååã®å€æ°ã
ãšãã£ã¡ãæ®éã ã£ããããã®èŸºããããããã§ããã
Cã®èŠæ Œã«ç²Ÿéããæ¹ã¯ãä»ã®èšèªã«ã€ããŠè°è«ãããšãçšèªã»ãã
ãåãæ¿ããŠãããã§ãããã? çµæ§å€§å€ããã ãªãŒãšæããŸããã
ããš struct { a[10]; } f(); ã§ f(...).a ãšããåŒã®äœ¿ãéã¯ã©ã
ããã°ãããã§ãã?
ãŸãããã€ã³ã¿åã«ãã£ã¹ããããããâŠ ä¹ é
ueh...@po.ntts.co.jpãã:
> # äžæãªããžã§ã¯ãã®ãªããžã§ã¯ãã£ãŠã¯ã©ã¹ã®ãªããžã§ã¯ãã
> # ãšããæå³ããšæã£ãŠãŸããããããã§ã¯ãªããŠCã®æå³ã§ã®
> # ãªããžã§ã¯ããªã®ã§ããã
ãããããC++ã®ãªããžã§ã¯ãã£ãŠã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãšCã®lvalue
ã§ãããããªãªããžã§ã¯ãããæã£ãŠãŠâŠ
ã¡ãã£ãšæ¬åœã«ã¢ããã€ã§ãã ä¹ é
P.S. äž¡è ããŸã£ããå¥ç©ãšããã®ã¯çè§£ããŠãŸããããå®å¿ãã
ka...@pfu.co.jpãã:
> ãã€ã³ã¿ãŒã©ããã®åçŽä»£å
¥ã«ãããå¶çŽã¯ã
> both operands are pointers to qualified or unqualified
> version of compatible types, and the type pointed to by the
> left has all the qualifiers of the type pointed to by the
> right;
> ãšãªã£ãŠããŸãã
ã¯ãããªãã»ã©ãããã¯å¯Ÿç«ããqualifierããªã(constã¯ãã£ãŠã
nonconstã¯ãªã)ãšããããšãå©çšããèŠå®ãªã®ãã
> pci = pi ã§ã¯ãæããŠããå
ã const int ãš int ãªã®ã§ããã®æ¡ä»¶
> ã«é©åããŸãã
> ããããppci = ppi ã§ã¯ãæããŠããå
ã const int * ãš int * ãª
> ã®ã§ããã®æ¡ä»¶ã«é©åããŸãããããã¯ããã€ã³ã¿ãŒåã compatible
> ã§ããããã«ã¯ããã€ã³ã¿ãŒãæããŠããå
ã®åãåãããã«å修食ã
> ããŠããå¿
èŠãããããã§ãã
> ïŒ int * const ãš int * ãªãããã®æ¡ä»¶ã«é©åããŸã
ããé£ããããŸãçå±ã¯åãããŸããã
> ãããã©ã®ããã«è¡šãã°ãç°¡æœã«ãã€åããæããªãããåé¡ã ãšæã
> ãŸããäŸãã°ã
> int * const (* volatile p)[10];
> ã®ãããªã®ã衚ãããšããæãconst ã volatile ãåãšåãé¢ãã
> 衚çŸã«ããã®ã¯é£ããã®ã§ã¯ãªãããšæããŸãã
ãªãã»ã©ããããèŠããåãããŸããã衚çŸã®åé¡ãããªããŠã
åé¡ã®æ ¹æºã¯ãä»»æã®å€æ°çèšæ¶é åã®ãã€ã³ã¿ãåãããšããèšèš
ææ³ãªãã ãšæããŸãããã®ããã§ã倿°ã«constãšãvolatileãšãæž
ãããšããã察å¿ãããã€ã³ã¿åã§ããµããŒãããããåŸãªããªããšã
ãâŠ
ã¢ãã¬ã¹ãåããªããã°ãåã¯å€ã®çš®å¥ã衚ãã ãã®ãã®ãšãªããèš
æ¶åã®ç¹æ§ã¯å倿°ã«ä»éããåãšã¯ç¬ç«ãã屿§ãšèããã®ãç°¡åã§
æè§£ã ãšæããŸãã
ãšããããå€ãã®èšèªã¯ããã§ããã ä¹ é
P.S. ããšããšã®çºç«¯ã¯Cã§æè²ããã®ããããã©ãããšãã話ã ã£ãã
ããªæ°ãããã®ã§ããããã£ã±ããã ãšããææ³ãæã¡ãŸããã
çå±±ãããæžããŠããããããã«ãªããžã§ã¯ãåã¯ãâããªããžã§ã¯ãã«å¯ŸããŠ
ä»ããããåãã§ã¯ãªããŠãããªããžã§ã¯ããå²ä»ããã«å¿
èŠãªæ
å ±ãæã£ãŠ
ããåãâãšè§£éãããªãïŒi+3ã¯ãªããžã§ã¯ãã§ã¯ãªãããã©ïŒãªããžã§ã¯ãå
ã§ããããšãã説æã«ããªã¥ããã®ã§ããããããïŒç§ã«ã¯åæ¬ãããïŒå¥ã¹
ã¬ããã®äžã®çšèªè§£èª¬ã§æžããŠããå
容ãèªãéãïŒãŸã çŽåŸã§ããŸããã
Tomohiko Sakamoto wrote in message <6o19h1$cv$1...@itcnews.itc.sony.co.jp>...
>In article <6nv0mn$1...@utogw.gssm.otsuka.tsukuba.ac.jp>,
> ku...@gssm.otsuka.tsukuba.ac.jp writes:
> å(type): (6.1.2.5)
> ãªããžã§ã¯ãã«æ ŒçŽããå€åã¯é¢æ°ã®è¿ãå€ã®æå³ã¯ããããã¢ã¯ã»
> ã¹ããã®äœ¿ãããåŒã®ãåãã«ãã£ãŠæ±ºå®ãããæ¬¡ã®3ã€ã«åé¡ããã
>
> (1) ãªããžã§ã¯ãå(object type):
> ãªããžã§ã¯ããèŠå®ããåã
颿°ããã¬ãã®æã¯ïŒç¡èŠããŠèªããšïŒâãªãã·ã§ã¯ãã«æ ŒçŽããå€ã®æå³ã¯ïŒ
ãªãã·ã§ã¯ããã¢ã¯ã»ã¹ããã®ã«äœ¿ãããåŒã®ãåãã«ããæ±ºå®âãšãããŸãã
ããã§ïŒi+1ã¯ãªãã·ã§ã¯ãã§ãããŸããããã£ãŠãããã¢ã¯ã»ã¹ããåŒã¯ãªã
ããšã«ãªããŸãããããšåŒããªãã®ã ããïŒäžã®æå³ã§ã®åã¯ãªããšããããš
ã«ãªããŸããã ããïŒi+1ã®äžã®æå³ã§ã®èŠå®ãããŠããåã¯äœããšåããã
ã°ïŒãããã£ãæå³ã§ã¯ãªããžã§ã¯ãåã§ã颿°åã§ãäžå®å
šåã§ããªããšè
ããæ¬¡ç¬¬ã§ããããããi+1ã«ã¯åã¯ãªãã®ããšèšãããã°ïŒããã§ã¯å°ã
å°ã話ã«ãªãã®ã§ïŒã©ãèšãèš³ãããããšèããŠã¿ãŸãããã§ïŒåã«ã¯ãåŒã®åã
ãšãå€ã®åããããããšã«ãïŒãå€ã®åãã¯ãåŒã®åãã®äžã®åºæ¬åãšåããšããã
ïŒcharãšãintãšããæããïŒã§ïŒi+3ã¯åŒã®å€ã§ããïŒãã®åã¯iãšåãåãšãªãã
忬ããïŒçå±±ããã®ãäºäººãåããããªè§£éãããŠããã®ã§ïŒãããªããšãæž
ãã®ã¯ãšã£ãŠãæ¥ããããã®ã§ããã
ã®åã®è¿·è·¯ã«å
¥ã£ãæãé£ãåå¿è
ã®ç¬ãèšã®å·»ãã§ããã
ç¡èŠããªãã§ã»ããã£ãã
int add(int a, int b) { return a+b; } ãšãã颿°å®çŸ©ããã£ããšããŸãã
颿°åŒåºãåŒ add(i,3) ã®å€ãããªãã¡é¢æ° add ã®è¿ãå€ã®æå³ã¯ãããã
ã¢ã¯ã»ã¹ããã®ã«äœ¿ãããåŒ add(i,3) ã®ãåãã«ãã£ãŠæ±ºå®ããŸãã
åŒ add(i,3) ã®ãåã㯠intåã§ãã
åŒ add(i,3) ã¯ãå€ãæã¡ãŸãã
åŒ add(i,3) ã¯ãªããžã§ã¯ãã§ã¯ãããŸããã
>> ãªããžã§ã¯ãã«æ ŒçŽããå€åã¯é¢æ°ã®è¿ãå€ã®æå³ã¯ããããã¢ã¯ã»
>> ã¹ããã®äœ¿ãããåŒã®ãåãã«ãã£ãŠæ±ºå®ãããæ¬¡ã®3ã€ã«åé¡ããã
ãããèšãæãããšã
ãªããžã§ã¯ãã«ã¯ããããã¢ã¯ã»ã¹ããåŒãããã
ãã®åŒã¯ãåããæã€ã
ãªããžã§ã¯ãã¯ãå€ãæã€ã
ãã®å€ã®æå³ã¯ããã®åŒã®ãåãã§æ±ºãŸãã
ãªããžã§ã¯ãã§ãªããã®ã«ãããããã¢ã¯ã»ã¹ããåŒãããã
ãã®åŒã¯ãåããæã€ã
ãªããžã§ã¯ãã§ãªããã®ããå€ãæã€ã
ãã®å€ã®æå³ã¯ããã®åŒã®ãåãã§æ±ºãŸãã
ããã§ã¯ãããªããžã§ã¯ãã§ãªããã®ããšããŠã颿°ã®è¿ãå€ããæããŠããŸ
ããããã¡ãããæŒç®ã«ããåŒã®å€ããåæ§ã§ãããã
ããªããžã§ã¯ãã§ãªããã®ããšããŠæããããŠããªããã®ã«ã宿°ãããããŸ
ãã
ã宿°ãèªèº«ã¯åŒã§ãã
ã宿°ãã¯æå³ãæã£ãå€ã§ãã
ã宿°ãã®åœ¢ãããåããæ±ºãŸããŸãã
> âãªãã·ã§ã¯ãã«æ ŒçŽããå€ã®æå³ã¯ïŒãªãã·ã§ã¯ããã¢ã¯ã»ã¹ããã®ã«äœ¿
> ãããåŒã®ãåãã«ããæ±ºå®âãšãããŸããããã§ïŒi+1 ã¯ãªãã·ã§ã¯ãã§
> ãããŸããããã£ãŠãããã¢ã¯ã»ã¹ããåŒã¯ãªãããšã«ãªããŸãããããšåŒ
> ããªãã®ã ããïŒäžã®æå³ã§ã®åã¯ãªããšããããšã«ãªããŸãã
i+1 ã¯ãªããžã§ã¯ãã§ã¯ãããŸããããããªããžã§ã¯ããã¢ã¯ã»ã¹ããåŒã¯ã
ããŸãããã§ããåŒ i+3 ã¯å€ãçã¿åºãããã®å€ãã¢ã¯ã»ã¹ããåŒãªã®ã§ãã
ãã®å€ã®æå³ã決å®ãããåãããããŸããadd(i,1) ãšåãã§ããã
+æŒç®åãçã¿åºãå€ã®ãåãã¯ã+æŒç®ã®èª¬æã®ãšããã«èšè¿°ããããŸãã
i ã 1 ã intåãªã i+1 ã intåã§ããintåã¯ãªããžã§ã¯ãåã§ãã
--
忬æºåœŠ saka...@sm.sony.co.jp
>> 颿°ããã¬ãã®æã¯ïŒç¡èŠããŠèªããšïŒ
>
>ç¡èŠããªãã§ã»ããã£ãã
>
çŠç¹ããªããžã§ã¯ãã«éå®ãããããïŒãããŸãªæç« ã«ã¯ãã°ããæ¶ããŠ
è²°ãã€ããã§ç¡èŠãããšããŸãããïŒãããŸã§ãªãã£ãã®ã§ããã
> ãªããžã§ã¯ãã«ã¯ããããã¢ã¯ã»ã¹ããåŒãããã
> ãã®åŒã¯ãåããæã€ã
> ãªããžã§ã¯ãã¯ãå€ãæã€ã
> ãã®å€ã®æå³ã¯ããã®åŒã®ãåãã§æ±ºãŸãã
>
åã®ãªãã·ã§ã¯ãã«é¢ããèšè¿°ã¯æ£ã«äžã®ããã«è§£éããŠãããŸããã
> ãªããžã§ã¯ãã§ãªããã®ã«ãããããã¢ã¯ã»ã¹ããåŒãããã
> ãã®åŒã¯ãåããæã€ã
> ãªããžã§ã¯ãã§ãªããã®ããå€ãæã€ã
> ãã®å€ã®æå³ã¯ããã®åŒã®ãåãã§æ±ºãŸãã
>
>ããã§ã¯ãããªããžã§ã¯ãã§ãªããã®ããšããŠã颿°ã®è¿ãå€ããæããŠããŸ
>ããããã¡ãããæŒç®ã«ããåŒã®å€ããåæ§ã§ãããã
>
ãªããžã§ã¯ã以å€ã§åã«é¢ããèšè¿°ã¯é¢æ°ã®è¿ãå€ã«ã€ããŠãããªãã£ã
ã®ã§ïŒå€ãšåŒã«åããŠèããŠããŸããŸããã
>ããªããžã§ã¯ãã§ãªããã®ããšããŠæããããŠããªããã®ã«ã宿°ãããããŸ
>ãã
> ã宿°ãèªèº«ã¯åŒã§ãã
> ã宿°ãã¯æå³ãæã£ãå€ã§ãã
> ã宿°ãã®åœ¢ãããåããæ±ºãŸããŸãã
>
ãããïŒåå¿è
ãæ··ä¹±ããããªãšããã§ãããïŒå®æ°ãšå®æ°åŒïŒ
>i+1 ã¯ãªããžã§ã¯ãã§ã¯ãããŸããããããªããžã§ã¯ããã¢ã¯ã»ã¹ããåŒã¯ã
>ããŸãããã§ããåŒ i+3 ã¯å€ãçã¿åºãããã®å€ãã¢ã¯ã»ã¹ããåŒãªã®ã§ãã
>ãã®å€ã®æå³ã決å®ãããåãããããŸããadd(i,1) ãšåãã§ããã
æåã¯ç§ã颿°ãšåæ§i+3ããã®å€ã«ã¢ã¯ã»ã¹ããåŒãšèããŸãããïŒ
æç¢ºã«é¢æ°ãšæžãããŠããã®ã§ïŒæŒç®åã®æŒã®åãåºãŠããªãã£ãã®
ã§ïŒïŒæè»ã«è§£éã§ããŸããã§ããã
>+æŒç®åãçã¿åºãå€ã®ãåãã¯ã+æŒç®ã®èª¬æã®ãšããã«èšè¿°ããããŸãã
>i ã 1 ã intåãªã i+1 ã intåã§ããintåã¯ãªããžã§ã¯ãåã§ãã
>
ãšããããšã§ïŒåã«é¢ããç§ã®çåã¯äžå¿è§£æ±ºããŸããã®ã§ïŒå
šãŠã®è³ªå
ã¯çµäºãããŠé ããŸãã忬ããïŒçå±±ãããã¯ããå€ãã®æ¹ã
ã«ïŒæã
質åã»çåã«ããããããé·ãéãã€ãåãé ãæãé£ãããããŸããã
> åé¡ã®æ ¹æºã¯ãä»»æã®å€æ°çèšæ¶é åã®ãã€ã³ã¿ãåãããšããèšèš
>ææ³ãªãã ãšæããŸãããã®ããã§ã倿°ã«constãšãvolatileãšãæž
>ãããšããã察å¿ãããã€ã³ã¿åã§ããµããŒãããããåŸãªããªããšã
>ãâŠ
å ã ããé«çŽ *ã¢ã»ã³ããª* èšèªããªãã§ãããããã
>P.S. ããšããšã®çºç«¯ã¯Cã§æè²ããã®ããããã©ãããšãã話ã ã£ãã
> ããªæ°ãããã®ã§ããããã£ã±ããã ãšããææ³ãæã¡ãŸããã
埡æã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ