ページ 11

ポインタ?

Posted: 2010年8月16日(月) 14:09
by 初心者
はじめまして。
ポインタを使用すれば何とかなりそうなのですが、散々悩みましたが分かりませんので質問いたします。

例えば、
unsigned long A;
unsigned short B[5];


A=0xF40000;
B[0]=1;
B[1]=2;
B[2]=3;
B[3]=4;
B[4]=5;

と仮定します。
その時、Aをアドレスとする番地にB[0]を、また、(A+1)のアドレスにB[1]を、・・・
という感じで、データを書き込みたいのですが、どのようにすれば巧くいきますでしょうか?

初期的な質問かもしれませんが、散々悩みに悩み、巧くいかず困っております。
申し訳ありませんが、よろしくお願いいたします。

Re:ポインタ?

Posted: 2010年8月16日(月) 14:18
by 初心者
記載し忘れましたが、ICは「M32C/87」を使用し、コンパイラはHEWを使用しています。

Re:ポインタ?

Posted: 2010年8月16日(月) 14:35
by softya
unsigned char *A;
unsigned char B[5];
int i;

A=0xF40000;
B[0]=1;
B[1]=2;
B[2]=3;
B[3]=4;
B[4]=5;
for( i=0 ; i<5 ; i++ ) {
a = b;
}
ってことかな?
ちなみにバイト単位の書き込みなので、変数のサイズもunsigned charにしてあります。

Re:ポインタ?

Posted: 2010年8月16日(月) 14:46
by 初心者
softyaさん

ご回答有難うございます。

私も初めはそれでよいかと思って試したのですが、どうしても、

A=0xF40000;
の箇所で

invalid '=' operand
というエラーが出てしまうので、困っております。

Re:ポインタ?

Posted: 2010年8月16日(月) 14:58
by softya
A=(unsigned char*)0xF40000;
とキャストしてもだめですか?

Re:ポインタ?

Posted: 2010年8月16日(月) 15:00
by toyo
unsigned char *A = (unsigned char *)0xF40000;
でもだめでしょうか

Re:ポインタ?

Posted: 2010年8月16日(月) 15:40
by 初心者
softyaさん、toyoさん

有難うございました。
お二人のいうやり方で、どちらでも通りました。
大変助かりました。

有難うございました。