※C言語初心者の為、内容に不備がある可能性があります。
ポインタ突入。
変数の実際のアドレスを調べるには変数に「&」をつければいいみたい。
「&hoge」は変数hogeのアドレスを表す。
「&」はアドレス演算子って言う。 「アンパサンドのアはアドレスのア!」
printf関数でのアドレスを表す変換指定子は「%p」
実行結果
ポインタを使うためには一般の変数と同じようにブロックの最初に宣言する必要がある。
int 型の変数アドレスを格納するポインタを「pi」とすると
int *pi;
というように宣言する。
「*」これをポイント宣言子(pointer declarator)と言う。
最後の行の「*pa」は変数aの値を表す。
この場合の「*」のことを間接参照演算子
(indirection refarence operator)と言う。
変数の型によってポインタの宣言が違うのは間接参照で値を代入する
ことがあるからでいいのかな?
サンプル。
実行結果
次に参照呼出しの例。
C言語には参照呼出しが無い!
でも引数にアドレスを渡せば同じ効果が得られる。
変数の値を関数に変更してもらうには、変数のアドレスを渡す!
ポインタのポインタ
実行結果
&とか*とかまだなれないけど意味はわかる。
ポインタ突入。
変数の実際のアドレスを調べるには変数に「&」をつければいいみたい。
「&hoge」は変数hogeのアドレスを表す。
「&」はアドレス演算子って言う。 「アンパサンドのアはアドレスのア!」
printf関数でのアドレスを表す変換指定子は「%p」
/* address01.c */ #include <stdio.h> int main() { char c; int i; double d, e; printf( "変数cのアドレスは%pです\n", &c ); printf( "変数iのアドレスは%pです\n", &i ); printf( "変数dのアドレスは%pです\n", &d ); printf( "変数eのアドレスは%pです\n", &e ); return 0; }
実行結果
$ ./address01.exe 変数cのアドレスは0xbf9ec85fです 変数iのアドレスは0xbf9ec858です 変数dのアドレスは0xbf9ec850です 変数eのアドレスは0xbf9ec848ですこの変数のアドレスを格納するための変数がポインタ(pointer)
ポインタを使うためには一般の変数と同じようにブロックの最初に宣言する必要がある。
int 型の変数アドレスを格納するポインタを「pi」とすると
int *pi;
というように宣言する。
「*」これをポイント宣言子(pointer declarator)と言う。
int a, b; int *pa; a = 5; pa = &a; b = *pa;
最後の行の「*pa」は変数aの値を表す。
この場合の「*」のことを間接参照演算子
(indirection refarence operator)と言う。
変数の型によってポインタの宣言が違うのは間接参照で値を代入する
ことがあるからでいいのかな?
サンプル。
/* pointer01.c */ #include <stdio.h> int main() { int a; int *lpa; lpa = &a; printf( "適当な数字を入力-----" ); scanf( "%d", &a ); printf( "変数aに%dが代入されました。\n", a ); printf( "変数aのアドレスは%pです。\n", &a ); printf( "変数aを指しているポインタはlpaです。\n" ); printf( "*lpaの値は%dです。\n", *lpa ); return 0; }
実行結果
$ ./pointer01.exe 適当な数字を入力-----10 変数aに10が代入されました。 変数aのアドレスは0xbfc5423cです。 変数aを指しているポインタはlpaです。 *lpaの値は10です。※初期化されていないポインタには何が入っているかわからないよ。
次に参照呼出しの例。
C言語には参照呼出しが無い!
でも引数にアドレスを渡せば同じ効果が得られる。
/* swap.c */ #include <stdio.h> void swap(int *, int *); int main() { int a, b; a = 10; b = 20; swap( &a, &b ); printf( "a = %d, b = %d\n", a, b ); return 0; } void swap( int *x, int *y ) { int z; z = *y; *y = *x; *x = z; return; }
$ ./swap.exe a = 20, b = 10
変数の値を関数に変更してもらうには、変数のアドレスを渡す!
ポインタのポインタ
#include <stdio.h> int main() { int a; int *p; int **pp; p = &a; pp = &p; **pp = 10; printf( "a = %d, *p = %d, **pp = %d\n", a, *p, **pp ); return 0; }
実行結果
a = 10, *p = 10, **pp = 10
&とか*とかまだなれないけど意味はわかる。
My developer is trying to convince me to move to .net from PHP. I have always disliked the idea because of the expenses. But he's tryiong none the less. I've been using WordPress on several websites for about a year and am worried about switching to another platform. I have heard fantastic things about blogengine.net. Is there a way I can import all my wordpress posts into it? Any help would be greatly appreciated!
Your website is pretty slow to display when using IE.
Your website is a wee bit slow to show up when using FF.
Is it each night the same with you here? But no employees could be much farther asunder in governmental policies than the Englishman and the American.