FC2ブログ

メモ:C言語のポインタ面白い使い方

φ(..)メモメモ

主に私が使ってる奴で教本に載ってないやり方集
マイクロコンピュータのためのプログラミングが多いがね

1.構造体+ポインタ
struct,unionは使えるが、ビットフィールドに適用できない。

typedef struct {
  char aa;
  char bb;
  int cc;
} STR;

この構造体があるときポインタ変数に置き換える。

STR A;
char *p = (char *)&A;

*pは次のように使える。
*pの初期アドレス→[1バイト:aa][1バイト:bb][4バイト:cc]
で全部で6バイトの変数になる。

*p++をすれば、bbにアクセスできる。

記憶方式に注意点
*p='d';
とかけば
A.aaの中身は'd'が入る。

*(p+2)='5'-'0';
とかけば、*(p+2)は5が入る。
A.ccの中身は、5が入るのだ。

*p++しながら、ちょうどA.ccの領域に入った時、
0x1,0x2,0x3,0x4を入れると
A.ccの値は、0x04030201となる。



2.二重ポインタ
char ss[50][50];

*p=ss;
**p=&p;

によって定義できる。
pp=ssとかはできない

記憶順序は
[0][0]、[0][1]、[0][2]・・・[0][49]、[1][0]、[1][1]・・・


代入の仕方

*(*p+n)=X;

記憶順序からn項目にXを代入する。
nは配列の変数の数にきまるので、50x50=2500が最大。

↓配列がm個あると考えてしまうので注意
p+m

↓配列の先頭アドレス+mを表すアドレス
*p+m

*(アドレス)で中身を表示するのはポインタの基本

スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ぶろぐかんりしゃ

SmartWoods
最近MoEは・・・
一休み

***** ひとこと *****

MoEの後継ともいわれる
Resonance gamez
完全スキルMMOが
気になるところ



********************


↓2016/3/26更新
My MoE









**********

NEWとらっくばっく
あーかいぶ
かてごりー
リンク
ぶろぐないけんさく
RSSふぃーど
おともだちになろ

この人とブロともになる