ページ 11

c言語のポインタってなんなんだ?

Posted: 2017年5月10日(水) 21:38
by purin52002
c言語のポインタの話をしませんか?

おそらくc言語最強の敵ですよね^^;
しかもよっぽどc言語に慣れてこないと便利さも対して感じないし、、、。

ポインタをしっかり理解している人はきっと少ないはず!
トピ主の私が全然理解できていない!

ということでc言語のポインタに関する話をどんどんしていきましょー。




、、、できれば、わかりやすいようにかみ砕いてお話しましょー^^;

Re: c言語のポインタってなんなんだ?

Posted: 2017年5月10日(水) 21:50
by purin52002
とりあえずポインタ便利じゃんと思う場面

関数の出力を増やすことができる。

これじゃないですかね?

コード:


void Func(int *func_a, double *func_b, char *func_c)
{
    *func_a = 1 ;
    *func_b = 2.0 ;
    *func_c = '3' ;
}

int main()
{
    int main_a ;
    double main_b ;
    char main_c ;

    Func(&a, &b, &c ) ;
    
    printf("a=%d b=%lf c=%c\n" ,main_a, main_b, main_c ) ;
}
普通は1個しか値を返せない関数で、たくさんの出力をすることができる。
べんり^p^

Re: c言語のポインタってなんなんだ?

Posted: 2017年5月11日(木) 14:17
by surach
こんにちは、私もポインタ勉強したばかりの初心者なんですが、ポインタは変数の住所を保存すると書いてありました。
多分、住所を保存するなら関数を行き来できるということなんですね!素晴らしい^p^

Re: c言語のポインタってなんなんだ?

Posted: 2017年5月13日(土) 23:28
by purin52002
関数ポインタの話題が出たのでちょっとお話します。

まず、ポインタとはパソコンの中のデータが保存されている場所の住所(アドレス)を表すものです。

ところで、関数というものは処理をひとまとめにしたものです。
しかし、関数も「処理をひとまとめにしたデータ」としてパソコンに保存されるのです。

つまりポインタにぶち込めちゃうのです。ポインタしゅごい。

関数ポインタは以下のように使います。

コード:

void Func(int a, double b) ;

int main()
{
    void (*func_p)(int, double) = Func ; //func_p というポインタ変数にFuncを代入

    int var1;
    double var2;

    func_p(var1, var2 ) ; //Func(var1,var2)を呼び出す
}
関数ポインタの型は結構複雑なのでtypedefすると便利ってロベールさんが言ってました^p^

Re: c言語のポインタってなんなんだ?

Posted: 2017年5月14日(日) 10:21
by surach
ふーむ、便利なのはなんとなくわかりますがまだまだ使いこなせないですね・・・。
がんばります!