13.4 ポインタ変数と引数

関数に引数としてアドレスを渡すことが出来る。なぜこのようなことが必要かと言うと、 関数はその結果を一つしか返すことが出来ないからである。しかし、複数の結果を 返したいような場合もある。このような場合、変数のアドレスを渡すことで、直接 その値を操作することが出来る。

        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 と同じ意味になっていることだけを知っておけば良い。



最初のページ 戻る 次へ 最後のページ 目次
Hiroyasu Asami