C言語 ポインタ
Posted: 2010年9月14日(火) 00:36
こんにちは。
ゲームを作ることを目標にして、C言語の勉強をしています。
そこで、確認と質問したいことがあるので質問させていただきます。
まず、確認でC言語の問題集で「文字列の長さを調べる関数 lenght(char str[/url]) をポインタで表記しろ」
という問題がありました。
そして、自分で作ったコードはこちらです。見やすく作ってないので見難いかもしれません。
#include < stdio.h>
int lenght(char *str);
int main(void)
{
char str[100];
int ans;
printf("文字列を入力してください。\n");
scanf("%s" , str);
ans = lenght(str);
printf("文字列の長さは%dです\n" , ans);
return 0;
}
int lenght(char *str)
{
int num , i;
i=0;
for(num=0 ; str[num]!='\0'; num++)
i++;
return i;
}
これでデバッグしたところ、正常に出来ました。(環境VisualC++2008)
このコードでポインタを使って表記できてますか?
確かに、関数を宣言(?)するところでは、「*」を使ってますが、lenght(char *str[/url])関数の内容で
ポインタが使われてない(?)ように見えます。この書き方で合ってるでしょうか?
もう一つの質問は、
for(num=0 ; str[num]!='\0'; num++)
の str[num] の部分で、何故 strの前に「*」を付けなくて良いのでしょうか?
確か、 str だけでは、strのアドレスを表すと書いてありました。
str に格納されているものを指すには strの前に「*」を付けると書いてあります。
ということは、 *str[num]!=・・・ と表記するべきではないでしょうか?
しかし、 * を付けるエラーになってしまいます。どうしてでしょうか?
まだまだC言語は初心者で「付けないのは当たり前だろ!」とか思うかもしれませんがよろしくお願いします。
また、質問の意味が分からなかったらすみません。
ゲームを作ることを目標にして、C言語の勉強をしています。
そこで、確認と質問したいことがあるので質問させていただきます。
まず、確認でC言語の問題集で「文字列の長さを調べる関数 lenght(char str[/url]) をポインタで表記しろ」
という問題がありました。
そして、自分で作ったコードはこちらです。見やすく作ってないので見難いかもしれません。
#include < stdio.h>
int lenght(char *str);
int main(void)
{
char str[100];
int ans;
printf("文字列を入力してください。\n");
scanf("%s" , str);
ans = lenght(str);
printf("文字列の長さは%dです\n" , ans);
return 0;
}
int lenght(char *str)
{
int num , i;
i=0;
for(num=0 ; str[num]!='\0'; num++)
i++;
return i;
}
これでデバッグしたところ、正常に出来ました。(環境VisualC++2008)
このコードでポインタを使って表記できてますか?
確かに、関数を宣言(?)するところでは、「*」を使ってますが、lenght(char *str[/url])関数の内容で
ポインタが使われてない(?)ように見えます。この書き方で合ってるでしょうか?
もう一つの質問は、
for(num=0 ; str[num]!='\0'; num++)
の str[num] の部分で、何故 strの前に「*」を付けなくて良いのでしょうか?
確か、 str だけでは、strのアドレスを表すと書いてありました。
str に格納されているものを指すには strの前に「*」を付けると書いてあります。
ということは、 *str[num]!=・・・ と表記するべきではないでしょうか?
しかし、 * を付けるエラーになってしまいます。どうしてでしょうか?
まだまだC言語は初心者で「付けないのは当たり前だろ!」とか思うかもしれませんがよろしくお願いします。
また、質問の意味が分からなかったらすみません。