ポインターってどんなときに使うの?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
なりすけ
記事: 3
登録日時: 12年前

ポインターってどんなときに使うの?

#1

投稿記事 by なりすけ » 12年前

はじめまして、「なりすけ」というものです。
C言語の勉強中のものなのですがまだ小さなプログラムしか書いた事がありません。
具体的にはジャンケンとかFizzBuzzとかです......
それで今ポインターの単元に入ったのですが、あまり深く理解ができません。
まぁ、便利なんだなぁとは思うんですが、先に書いた通りまだ小さなプログラムしか書いた事がないのでどんなときに便利なのかとかがよくわかりません。

なので、ポインターってどんなときに使われてるのかを教えて頂くとありがたいです。
どうぞよろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ポインターってどんなときに使うの?

#2

投稿記事 by softya(ソフト屋) » 12年前

分かりやすい例はソートとかキューで高速な処理ができるよって事ですが、不定長なものが扱いやすいとか、関数ポインタでswitch~caseを排除できるとか、違うデータを同じ関数で処理する時に便利など色々あります。もっと高度な使い方もありますよ。

 難しいけど参考に。 ↓
「ポインタを使ったデータ構造」
http://wwws.kobe-c.ac.jp/deguchi/c/list/frame.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

taketoshi
記事: 222
登録日時: 14年前
住所: 日本国

Re: ポインターってどんなときに使うの?

#3

投稿記事 by taketoshi » 12年前

私はローカル変数を別の関数で弄る時によくポインタ渡しをします。
クラスを生成するときも、newしてからポインタで受け取ります。
SRPGを趣味で制作していますが、ポインタ使わないと見通しが悪いソースが出来上がりそうです。


ローカル変数をポインタ渡しする例

コード:

#include "stdafx.h"
 
typedef struct{
int x,y;
}position;
 
/*構造体のポインタを受け取って直接書き換える関数*/
//リターンも使わないのでvoidを宣言する
void returnstruct(position *lpPos){
 
    //ポインタを受け取って書き換えるのでtempは不要
    //position temp;
     
    //直接書き換える(ここはポインタ経由でアクセスするのでアロー演算子を用いる、アロー演算子がポインタ演算子(*)を兼ねる)
    lpPos->x = 100;
    lpPos->y = 200;
     
    return;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    position pos;
     
    //関数に構造体のポインタを渡す
    returnstruct(&pos);
 
    //posに値がセットされている(ここは構造体にアクセスするのでドット演算子を用いる)
    printf("x = %d,y = %d\n",pos.x,pos.y);
     
    return 0;//←ここでpos変数は消滅する
 
}

なりすけ
記事: 3
登録日時: 12年前

Re: ポインターってどんなときに使うの?

#4

投稿記事 by なりすけ » 12年前

う〜ん、なるほど!
では、データー量が多いときに使うという認識でいいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ポインターってどんなときに使うの?

#5

投稿記事 by softya(ソフト屋) » 12年前

なりすけ さんが書きました:う〜ん、なるほど!
では、データー量が多いときに使うという認識でいいのでしょうか?
どちらかと言うと現代のプログラミングでは
・ポインタを使えば、わかり易く記述出来る場合がある。
・カプセル化(外部に情報を隠蔽)する効果を狙って使う場合がある。
・可変長データの構造を扱える。
などが主体で、高速化やメモリの効率化は必要に応じてっ所でしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

なりすけ
記事: 3
登録日時: 12年前

Re: ポインターってどんなときに使うの?

#6

投稿記事 by なりすけ » 12年前

なかなか難しいですね......
私が使っている参考書だとひっきりなしにポインターが出てくるもんなので...
これから、ポインターを集中的に勉強します。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る