ページ 11

配列とポインタ

Posted: 2009年4月24日(金) 17:54
by 研修生
すいません、ポインタについて理解がおぼつかない感じで少しご質問させていただきます。
char str[20]="HELLO";
for(int i=0;str;i++){
  str=tolower(str);
}


という関数をポインタに書き換えたものを教えて下さい。
配列はわかりやすいんですがポインタはいま1つで・・
お手数ですがお願いします。何回かポインタについて質問させてもらってるんですけど
中々理解できなくて1つ見本を見せてもらったほうがいいと思いました。

Re:配列とポインタ

Posted: 2009年4月24日(金) 18:31
by 初級者
書かれたコードは関数の形をとっていません。

書かれた文が関数の中にどのように存在しているかと、
その関数をどのように呼び出しているかを含む、
想定されている書き換え前のコードをご提示いただけますか?

Re:配列とポインタ

Posted: 2009年4月24日(金) 18:46
by march3
こういうこと?
char str[20]="HELLO";
char *p = str;
for(; *p ;p++){
  *p = tolower(*p);
}

Re:配列とポインタ

Posted: 2009年4月24日(金) 20:36
by dic
配列を使った場合と
ポインタを使った場合の例なんかのせちゃったりしちゃいます
#include <stdio.h>

void	main()
{
	int	a[10], i;

	for( i=0; i<10; i++ )
		a = i;

	printf( "配列版\n" );
	for( i=0; i<10; i++ )
		printf( "ADDRESS:%8d = %d\n", &a, a );

	printf( "ポインタ版\n" );
	int	*p;
	for( p=a; p!=&a[10]; p++ )
		printf( "ADDRESS:%8d = %d\n", p, *p );
}

参考になれば幸いです

Re:配列とポインタ

Posted: 2009年4月24日(金) 20:52
by box
> 		printf( "ADDRESS:%8d = %d\n", &a, a );
> 		printf( "ADDRESS:%8d = %d\n", p, *p );

ポインタ値を出力する際の書式文字列は、"%p"です。
整数値を前提としていると、何かまずいことが起きるかもしれませんし、起きないかもしれません。

Re:配列とポインタ

Posted: 2009年4月25日(土) 07:16
by dic
>ポインタ値を出力する際の書式文字列は、"%p"です。
MSDNで調べたところ %p でした
これは知りませんでした
ご指摘ありがとうございます