ポインタ基礎
の編集
http://www.teres.club.uec.ac.jp/wiki/?%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E5%9F%BA%E7%A4%8E
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
~/****************************** ~ ~ PG班講義 ポインタ基礎 ~ ~******************************/ ~ ~/* ポインタ:ある変数が使っているメモリのアドレス(番地)を示すもの */ ~ ~#include <stdio.h> ~#include <stdlib.h> ~ ~int main(void){ ~ int a; ~ int *pa; ~ int **ppa; ~ ~ /* アドレスを表示するにはアドレス演算子 & を使う ~ aの値とアドレスの表示は次の通り */ ~ a=1; ~ printf(" a = %d\n &a = %p\n",a,&a); ~ ~ /* aのポインタ pa を作ってそこにaのアドレスを突っ込んでみる */ ~ pa=&a; ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ /* aをいじると当然*paも変わる */ ~ a=2; ~ printf(" a = %d\n &a = %p\n",a,&a); ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ /* 逆もまた然り */ ~ *pa=10; ~ printf(" a = %d\n &a = %p\n",a,&a); ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ /* ポインタのポインタなんてこともできる */ ~ ppa=&pa; ~ printf("**ppa= %d\n ppa = %p\n",**ppa,ppa); ~ /* ちなみに *ppa はこんな値になる */ ~ printf("*ppa = %p\n\n",*ppa); ~ ~ /* stdilib.h のmalloc関数を使うと変数のアドレスを示さなくても ~ ポインタを使えるようになる */ ~ /* malloc(型):型サイズの void* を返す */ ~ pa=(int*)malloc(sizeof(int)); ~ *pa=100; ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ return 0; ~} ~/****************************** ~<実行例> ~ a = 1 ~ &a = 0029FCE0 ~ *pa = 1 ~ pa = 0029FCE0 ~ ~ a = 2 ~ &a = 0029FCE0 ~ *pa = 2 ~ pa = 0029FCE0 ~ ~ a = 10 ~ &a = 0029FCE0 ~ *pa = 10 ~ pa = 0029FCE0 ~ ~**ppa= 10 [#qdd91304] ~ ppa = 0029FCD4 ~*ppa = 0029FCE0 [#f675a574] ~ ~ *pa = 100 ~ pa = 006E1390 ~ ~******************************/
タイムスタンプを変更しない
~/****************************** ~ ~ PG班講義 ポインタ基礎 ~ ~******************************/ ~ ~/* ポインタ:ある変数が使っているメモリのアドレス(番地)を示すもの */ ~ ~#include <stdio.h> ~#include <stdlib.h> ~ ~int main(void){ ~ int a; ~ int *pa; ~ int **ppa; ~ ~ /* アドレスを表示するにはアドレス演算子 & を使う ~ aの値とアドレスの表示は次の通り */ ~ a=1; ~ printf(" a = %d\n &a = %p\n",a,&a); ~ ~ /* aのポインタ pa を作ってそこにaのアドレスを突っ込んでみる */ ~ pa=&a; ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ /* aをいじると当然*paも変わる */ ~ a=2; ~ printf(" a = %d\n &a = %p\n",a,&a); ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ /* 逆もまた然り */ ~ *pa=10; ~ printf(" a = %d\n &a = %p\n",a,&a); ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ /* ポインタのポインタなんてこともできる */ ~ ppa=&pa; ~ printf("**ppa= %d\n ppa = %p\n",**ppa,ppa); ~ /* ちなみに *ppa はこんな値になる */ ~ printf("*ppa = %p\n\n",*ppa); ~ ~ /* stdilib.h のmalloc関数を使うと変数のアドレスを示さなくても ~ ポインタを使えるようになる */ ~ /* malloc(型):型サイズの void* を返す */ ~ pa=(int*)malloc(sizeof(int)); ~ *pa=100; ~ printf(" *pa = %d\n pa = %p\n\n",*pa,pa); ~ ~ return 0; ~} ~/****************************** ~<実行例> ~ a = 1 ~ &a = 0029FCE0 ~ *pa = 1 ~ pa = 0029FCE0 ~ ~ a = 2 ~ &a = 0029FCE0 ~ *pa = 2 ~ pa = 0029FCE0 ~ ~ a = 10 ~ &a = 0029FCE0 ~ *pa = 10 ~ pa = 0029FCE0 ~ ~**ppa= 10 [#qdd91304] ~ ppa = 0029FCD4 ~*ppa = 0029FCE0 [#f675a574] ~ ~ *pa = 100 ~ pa = 006E1390 ~ ~******************************/
テキスト整形のルールを表示する