ページ 11

ポインタで文字列を出力したいのですが(初心者です)

Posted: 2012年11月10日(土) 08:56
by plum
コンパイルしようとするとエラーが出てしまいます。
初心者向けの本を読んで同じコードを書いてるのですがどうしてでしょうか?

下記、エラー内容とコードになります。
よろしくお願いします。

:5:13: 警告: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
yoshiyuki@yoshiyuki-System-Product-Name:~/cworks$


コード:

 
#include <stdio.h>

int main(void)
{
	char *str= "hello";
	
	printf("文字列は%sです。\n", str);
	
	return 0;
	
}
 

Re: ポインタで文字列を出力したいのですが(初心者です)

Posted: 2012年11月10日(土) 09:08
by beatle
出ているのは「エラー」ではなくて「警告」です。
どちらも出ないほうが良いものですが、区別した方がいいと思います。

さて、出ている警告を解消するためには、6行目を

コード:

    const char *str= "hello";
と変更すればいいだろうと思います。

"hello"というのは、書き換え不可能の文字列データです。
string constant = 文字列定数 という意味です。

書き換え不可能なデータの置き場所を、普通のポインタ変数(char *型の変数)に格納しているために警告が出ています。
constを付けたポインタ変数にすれば、「このポインタ変数で示されるデータは定数であって、書き換えてはいけない」ということを明示できます。

Re: ポインタで文字列を出力したいのですが(初心者です)

Posted: 2012年11月10日(土) 09:28
by plum
理解出来ました!

独りで勉強してると些細なつまづきが多くて、本当に助かりました!

アドバイスありがとうございます!