🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #417

Re: pointer usage

#417
From: KANDO Takayuki
Date: Fri, 10 Apr 1998 00:00
46 lines
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-mail
References: <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