プロが教えるわが家の防犯対策術!

typedef struct WRITE_BUF_TYPE{
 byte adr_h; // ワードアドレス上位
 byte adr_l; // ワードアドレス下位
 byte *buf_adr; // 送信/受信先 アドレス
 byte cnt; // 文字数
};

struct W_BUF_TYPE b[10];

構造体、データ定義を上のようにしています。
b[10]の空きを探して書き込むサブルーチンを作ったのですが、*buf_adrの設定方法がわかりません。
ご存知の方、教えてください。

サブルーチン
sub_func(int8 *adr){
 byte i;
 for(i=0;i<10;i++){
   if(b[i].adr_h==0){  // b[10]の空き検索
   b[i].buf_adr=*adr; // アドレスを設定する。ここでエラーとなります。
 }
}
サブルーチンでバッファのアドレスを受けて、b[10]の空きエリアに設定するプログラムです。

A 回答 (2件)

b[i].buf_adr=*adr; → b[i].buf_adr=adr;


ポインタ同士なのだから、そのまま転記する。
最初の書き方だと、ポインタ←ポインタの指している内容(整数)を
行うと言う意味なので、エラーになる。
別に左辺が構造体のメンバでなくても間違いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/11/13 16:00

なんでsub_funcは(int8* adr)なの。


byte*じゃないの?byteの実体がint8なんだとしても、こういうのは混乱の元ですよ。
というか、混乱しているっぽいですが。
なんで、adrには*がついてるの? .buf_adrはポインタなんでしょ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!