関数に引数としてアドレスを渡すことが出来る。なぜこのようなことが必要かと言うと、 関数はその結果を一つしか返すことが出来ないからである。しかし、複数の結果を 返したいような場合もある。このような場合、変数のアドレスを渡すことで、直接 その値を操作することが出来る。
void str(char *src);
main(){
char s[] = "this is a test.";
str(s);
printf("%s\n", s);
}
void str(char *src){
char *s = src;
for(;*s != '\0'; s++){
if( *s==' ' ){
*s = ':';
}
}
}
|
この例の場合、main() で宣言している文字列 "this is a test." のアドレスを
関数 str() に渡している。もちろん、関数 str() でもそのアドレスを
受け取ることが出来るように、引数の宣言に char *src を用いている点に
注意しよう。この結果、src には先の "this is a test." のアドレスが代入
されることになる。従って、この文字列を直接変更するので、main() 関数で
の文字列の出力でも、"this:is:a:test." に変更されているのである。
char s[] の意味は先の章で学習するが、ここでは意味的には
char *s と同じ意味になっていることだけを知っておけば良い。