Newsgroups: fj.lang.c,fj.lang.c++
Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!infoweb-news!news.tokyo.infoweb.or.jp!fgwnews!fdmnews!flabnews!kiko!news
From: tamy@flab.fujitsu.co.jp (Yutaka Tamiya)
Subject: Re: Maximal use of "const" in function declarations ?
Message-ID: <ywnk9rjg624.fsf@azusa.proc.flab.fujitsu.co.jp>
Date: Mon, 18 Nov 1996 08:29:07 GMT
Organization: Fujitsu Laboratories Ltd., Kawasaki, Japan
Sender: tamy@azusa.proc.flab.fujitsu.co.jp
X-Nntp-Posting-Host: azusa
In-Reply-To: kate@pfu.co.jp's message of 08 Nov 1996 09:39:04 GMT
X-Newsreader: Gnus v5.0.12
Lines: 109
Xref: galaxy.trc.rwcp.or.jp fj.lang.c:3160 fj.lang.c++:207
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.lang.c&nb=3160&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

$BED5\!w(B ANSI C $B$G$N(B const $B$N5sF0$K$D$$$F$^$H$a$^$7$?!#(B

 $B@hF|!";d$O(B ANSI C $B$N(B const $B$K$D$$$F0J2<$N<ALd$r$7$^$7$?!#(B

Q. $B%W%m%H%?%$%W@k8@(B
void f2cv(const int **b)
  $B$r;}$D4X?t(B f2cv() $B$N0z$-?t$K(B
int **y;
  $B$G@k8@$7$?JQ?t(B y $B$rM?$($k$H!"7?$,0c$&$H%(%i!<$K$J$k$N$O2?8N$+!)(B
  $B0EL[$N7?JQ49(B (int *) ==> (const int *) $B$,$"$k$N$@$+$i!"(B
  (int **) ==> (const int **) $B$b$"$k$H;W$&$N$@$1$I!#(B


$B$3$l$KBP$9$k2rEz$O0J2<$N$H$*$j$G$9!#(B

A1. $BJR;3$5$s(B (kate@pfu.co.jp) $BB>$h$j!"(BANSI C $B$N5,3J=q$K4p$E$$$?@bL@$,(B
  $B$"$j$^$7$?!#(B
  (1)$B4X?t$N%Q%i%a%?$X$N0z?t$N<u$1EO$7$O!"!VC1=cBeF~(B(=)$B!W5,B'$K=>$&!#(B
  (2)$BC1=cBeF~$K$*$$$F!"=$>~;R(B(const, volatile)$B$K$D$$$F0J2<$N0EL[$NJQ49(B
     $B$,$"$k!#(B
$B:8JU(B<===$B1&JU(B
TT
const TT $B$^$?$O(B const T
volatile TT $B$^$?$O(B volatile T
const volatile TT $B$^$?$O(B const T $B$^$?$O(B volatile T
$B$^$?$O(B const volatile T
  (3)$B>e5-$NNc$G$O!"(B
$B:8JU$N(B T == const int **
$B1&JU$N(B T == int **
     $B$G!"(B $BN><T$O8_49$,L5$$!V7?!W$N$?$a!"BeF~$G$-$J$$!#(B
  (4)$B$3$N$3$H$+$i!"(B
int **  ==> const int *const *,
     $BEy$b5v$5$l$J$$!#(B


A2. $B0KF#$5$s(B (itoh@scc.jest.co.jp) $B$h$j!"(Bint ** $B$r(B const int ** $B$KJQ49(B
  $B$7$?$H$-$K!"IT6q9g$,$"$kNc$r5s$2$FD:$-$^$7$?!#8=:_$N;EMM$O$3$N$h$&$J(B
  $BIT6q9g$,5/$-$J$$$3$H$rJ]>Z$7$^$9!#(B

       //$B2>$K!"(Bint ** -> const int ** $B$,@5$7$$$H$9$k(B
       void func ( const int **abc ) {
   static const int bar[5] = { 1, 2, 3, 4, 5 };
   *abc = bar;
       }
       main () { 
   int data[10];
   int *dp = data;
   func( &dp );    // int ** -> const int **
   (*dp)[0] = 2;   // const $B$NNN0h$K=q$-9~$s$@(B!!
       }

A3. $BF1$8LdBj$r07$C$?K\$,$"$j$^$7$?(B
   "Expert C Programming -- DEEP SECRETS," Perter van der Linden $BCx(B 
  ("$B%(%-%9%Q!<%H(B C $B%W%m%0%i%_%s%0(B -- $BCN$i$l$6$k(B C $B$N?<AX(B", $BG_86(B $B7O(B $BLu(B) 

  $B$3$NK.LuK\$N(B p.48 $B$+$iF1$85DO@$,$5$l$F$$$^$9!#$^$?!"(B
const $B$O!VDj?t!W$G$OL5$/$F!"!V(BRead Only$B!W$G$"$k!#(B
  $B$H$b=q$+$l$F$$$^$9!#Nc$($P(B
int x = 10;
const int *const_ptr = &x;
int *ptr = &x;
  $B$O!"(B
$B!&(Bconst_ptr $B$rDL$8$F(B x $B$NFbMF$r=q$-49$($i$l$J$$!#(B
$B!&(Bptr $B$rDL$8$F(B x $B$NFbMF$r=q$-49$($i$l$k!#(B
  $B$G$9!#(B const int * $B$O!VDj?t(B int $B$r;X$9!W$H$$$&0UL#$G$O$J$$$N$G!"(B 
  const_ptr $B$,;X$9FbMF$O!"(B ptr $B$rDL$8$F=q$-49$($,2DG=$G$9!#(B

    $B$^$?!"(BC++ $B$K4X$7$F$O!"5,3J$O>e5-$G=R$Y$?(B A1 $B$K=>$$$^$9$,!"(B cfront
  (C++ $B=hM}7O(B)$B$G$O$3$N$h$&$JBeF~$,5v$5$l$F$$$k!#(B

    $B;d$N<j85$N(B SUN $B$N(B C++ $B$G$O!"(BCC-3.0.1 (cfront) $B$O%(%i!<L5$7$G$9$,!"(B
  CC-4.0.1 (cfront $B$G$O$J$$(B) $B$G$O7Y9p$K$J$j$^$7$?!#(B

-- $B0J>e(B --

<  $B;d$N4*0c$$$N860x$O!"(B CC-3.0.1 $B$r;H$C$?7P83$@$1$KMj$j!"5,3J=q$rFI$^$J(B
$B$+$C$?$3$H$K$"$C$?$h$&$G$9!#(B

  $B$3$l$G!"(B const $B$N9=J8>e$N;H$$J}$OJ,$+$j$^$7$?$,!"0UL#E*$J;H$$J}$OL$(B
$B$@J,$+$i$:$8$^$$$G$9!#(B
  $BNc$($P!"%i%$%V%i%j4X?t(B strchr() $B$O(B
char *strchr(const char *s, int c);

$B$N%W%m%H%?%$%W@k8@$r;}$A$^$9!#JV$jCM$N(B char* $B$O!"0z?t(B s $B$N0lIt$J$N$G!"(B
$B$3$N4X?t$r<BAu$9$k$K$O!"(B const char* ==> char* $B$N%-%c%9%H$,IT2D7g$K$J(B
$B$j$^$9!#(Bchar* $B$H(B const char* $B$N%S%C%HI}$OF1$8$J$N$G!"Aj8_$NJQ49$O%3%s(B
$B%Q%$%i$KJ]>Z$5$l$F$$$k$b$N$N!"5$;}$A0-$$$G$9!#(B

char *strchr(const char *s, int c)
{
    while (*s != '\0' && *s != c) s++ ;
    return (*s != '\0') ? (char *)s : 0;
}

$B<B:]!"(B strchr $B$N(B s $B$K(B const char *p = "hello world" $B$NDj?tJ8;zNs$rEO$9(B
$B$H!"JV$jCM$N%]%$%s%?$G$3$NDj?tJ8;zNs$NCf?H$rJQ$($k$3$H$,=PMh$F$7$^$$$^(B
$B$9(B($B%3%s%Q%$%i$,5v$9$H$$$&0UL#$G!"<B9T%(%i!<$+$bCN$l$J$$(B)$B!#(B

$B$+$H$$$C$F!"(B s $B$r(B char * $B$H@k8@$9$k$H!"(B
$B!V(B strchr() $B$O(B s $B$NFbMF$rJQ99$7$J$$!W(B

$B$H$$$&%K%e%"%s%9$,I=$;$^$;$s!#(B

$B!t$^$@$^$@=$9T$,B-$j$J$$!#!#!#(B
-- 
--------
$B%A%'%mCF$-$N(B tamy@flab.fujitsu.co.jp /$B$U8&(B/CAD$B8&(B/$BED5\(B  $BK-(B
Tel: 044-754-2663, Fax: 044-754-2664
            
