Wednesday, December 12, 2007

C言語のポインタ

Source: http://www.geocities.co.jp/ky_webid/c/030.html
C言語のポインタを書くときいくつかの注意点(間違いやすい点)がある.上のページはいくつかの注意点を書いてある.以下にまとめる.

  • C言語では配列自体を引数にできないというのはC言語のルールこのときポインタを利用する
    仮引数に限っては配列とポインタは同じように宣言できる
    例:
    dispArray(int array[]);
  • 結果を受け取るためにポインタを渡す
    ポインタを引数にすれば結果をそのアドレスにある変数へ格納させることができる
    2つ以上の戻り値がほしいときポインタを利用する.返してほしいデータの個数分だけポインタを引数として渡し,結果をそのアドレスに入れてもらう.
  • 戻り値にポインタを使うときに注意が必要.関数のローカルアドレスを返してはならない.


例:(間違ったプログラム)


#include

char *getstring(void);

int main(void)
{
char *p;

p = getstring();
puts( p ); /* 受け取った文字列を出力 */

return 0;
}

/* 80文字以内の文字列を入力させ、その文字列のアドレスを返す */
char *getstring(void)
{
char str[81];

puts( "80文字以内の文字列を入力して下さい" );
fgets( str, 81, stdin );

return str;
}

No comments: