海外旅行から帰ってきたら、まず何を食べる?

#include<stdio.h>

int rstrlen(char*);

int main(void)
{
char str[100];

printf("文字列を入力してください\n");
gets(str);

printf("文字数は %d です\n",rstrlen(str));

return 0;
}
int rstrlen(char *p)
{
if(*p){
p++;
return 1+rstrlen(p);
}

else
return 0;
}
文字数を計算するプログラムです。
if(*p)の*pとはNULLを表しているのですか?

A 回答 (1件)

 「rstrlen」を見てみます。

ここには,char へのポインタ p が入って呼び出されます。

 ここでの,if (*p) は,if (*p != '\0') と同じです。ですから,「p の指す先の文字がヌル文字(=終端)でなかったら」です。このとき,p の指す先を 1 だけ増やして,再帰し,その戻り値に 1 を加えます。一方,ヌル文字だったらそこで再帰は停止し,0 を返します。
    • good
    • 0
この回答へのお礼

わかりやすい説明ありがとうございます!!

お礼日時:2004/04/14 18:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!