Article View: fj.lang.c
Article #417Re: pointer usage
From: KANDO Takayuki
Date: Fri, 10 Apr 1998 00:00
Date: Fri, 10 Apr 1998 00:00
46 lines
2065 bytes
2065 bytes
神戸@川崎です。
Kentaro ONIZUKA <onizuka@mpapia.trc.rwcp.or.jp> wrote in article <lc6ra371aoy.fsf@mpapia.trc.rwcp.or.jp>...
> では、次の場合はどうでしょう。
> #include <stdio.h>
> int main(void)
> {
> char* a="heroherohero";
> printf("a = %s\n",a);
> }
> たぶん、これはおちないんじゃあないかな。なぜなら、コンパイルされたコー
> ドには、"heroherohero" という文字領域があって、a はその場所を指すこと
> ができるからですね。
そうですね、読む時は問題ないでしょうね。
正しく初期化されてるポインタだから。
ただ、書く時は問題があって、
AMSIでは文字列の修正可能性は保証されてないことから
read onlyのメモリ領域に配置されて実行時におちる可能性はあります。
おちないまでも文字列が共有されている場合があり得るので
不思議な動作をする場合もあり得ないとは言えないでしょう。
という訳で
> char* a="heroherohero";
よりは
const char* a = "heroherohero";
の方がココロ安らかでしょうかねぇ。
> ポインタ変数は、普通実体となる領域を malloc() 系統でとって使うものです。
>#自動的にやってくれれば良いという話はある。
自動って…処理系はどうやって確保すべきかどうかと
確保するとして確保すべき大きさを知るのですか?
--
Kando. Takayuki <kando@flab.fujitsu.co.jp>
High Performance Computing Research Center (FUJITSU LABORATORIES LTD.)
1015 KAMIKODANAKA, NAKAHARA-WARD, KAWASAKI-SHI, KANAGAWA, 211-88 JAPAN
Phone: (Intl Prefix)+81-44-754-2670
Technical Details
Message-ID:
<01bd6442$45bbda00$db22a085@butter.para.flab.fujitsu.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<6giahu$8hs$1@nn-tk001.ocn.ad.jp> <lc6ra371aoy.fsf@mpapia.trc.rwcp.or.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 106434,a581945fbab586cf X-Google-Attributes: gid106434,public From: "KANDO Takayuki" <kando@flab.fujitsu.co.jp> Subject: Re: pointer usage Date: 1998/04/10 Message-ID: <01bd6442$45bbda00$db22a085@butter.para.flab.fujitsu.co.jp> X-Deja-AN: 342662187 Content-Transfer-Encoding: 8bit References: <6giahu$8hs$1@nn-tk001.ocn.ad.jp> <lc6ra371aoy.fsf@mpapia.trc.rwcp.or.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Organization: FUJITSU LABORATORIES LTD. Newsgroups: fj.lang.c