2011-07-10 7 views
3

私はCに新しいです。私は1024の16進数のconst unsigned short配列を持っています。各16進数は8ビットであり、GBA画面に画像を表示する際にオン/オフするビットを表す。しかし、私が参照するために私が下に持っているDMAシンタックスとそれをすべて気にすることはありません!!配列内の要素をメモリアドレス順に繰り返します。 (C)

私の主な質問は...どのようにして配列内の要素を順番に処理し、その内容を取得し、アドレスをインクリメントすることができますか?あなたは多分以下のコードを見詰めるを与えることができればまた、なぜイム取得を参照してください。

"Program.c:(.text+0xe8): undefined reference to `myimg'" 

「drawImage3」を呼び出し、それがラジアンになるラインに。

(program.cを主に):

const unsigned short *pt; 
pt = &myimg[0]; 
int size = 5; 
drawImage3(15,15,img_WIDTH,img_HEIGHT, pt); 

(他の場所で定義される):

void drawImage3(int x, int y, int width, int height, const u16* image) 
{ 
    int r; 
    for (r=0; r<height; r++) 
    { 
     DMA[3].src = &image; 
     DMA[3].dst = &videoBuffer[OFFSET(x+width, y, 240)]; 
     DMA[3].cnt = width | DMA_SOURCE_FIXED | DMA_ON | DMA_DESTINATION_INCREMENT; 
     image++;  
    } 
} 

答えて

1

ポインタのアドレスにDMA[3].srcを設定していますが、これはおそらく実行しないものです。あなたは後者を選択した場合

DMA[3].src = &image[r]; # If you do this do NOT increment image 

または

DMA[3].src = image;  # And continue to increment image 

:明確さのために、ここではこれらの文献の意味は次のとおりです。

*image -- the value of the thing which image points to 
image[0] -- same as *image 
image -- the location in memory of your thing 
&image -- the location in memory that is storing your pointer 
&image[0] -- same as image 
&image[n] -- the location of the nth element in your thing 

ので、代わりのDMA[3].src = &image;、あなたはおそらく、これらの二つのうちの一つ欲しいです、次に

DMA[3].src = image; 
image++; 

以下のように書けるようになりました:

DMA[3].src = image++; 
0

設けられたコードから、myimgは、2番目のコードブロックに(2行目に定義されることはありません)。

アドレスによるループでは、配列はすでにポインタであるため、単純なforループを実行することは、アドレスをループオーバーすることと同じです。しかし、Cがすでにやっていることがあるので、あなたは 'アドレスによるループ'ビジネスで何を達成しようとしているのか分かりません。

EDIT:

私の知る限り、配列は本当にCには存在しませんが、C++で行うので、「配列」にインデックス付けすると、ちょうどこのアドレスから始まる私のメモリのチャンクを与える」、と言っていると、この中には多くのバイト*サイズがあります。

たとえば、int配列(インデックスあたり4バイト)は、メモリのチャンクで、それは4 bytes * number of indexesです。この '配列'へのインデックスの取得は、メモリチャンクへのメモリオフセットxバイト* 4(sizeof int)を取得するだけです。

簡単に言えば、それほど心配する必要はありません。

+1

アレイはポインタではありません。それは_decays_ intoになります。 –

+0

私は配列が理解できるものについて少しの情報を追加しました。 – tjameson

+0

この新しく抱かれている用語は何であるか分かりませんが、cの配列はかなりのポインタです。 – Perception

関連する問題