2012-04-04 18 views
-2

私は配列を使ってcでデキューを実装しています。 leftとrightはデキューの左端と右端の要素を指すポインタです。 show()関数は、左右のポインタを受け取ります。私は、ボイドショー(int型*のL、int型* R)で次のようにしようとすると、関数はポインタ間の比較

int *t; 
for(t=l;t<r;t++); 
    { 
     printf("%d-->",*t); 
    } 
     printf("%d\n",*t); 

出力 - 間違っ生成しかし、私はこれをしようとすると、それは明らかにポインタ間の比較を

for(t=l,i=0;i<r-l;i++,t++) 
     printf("%d-->",(*t)); 
     printf("%d\n",*r); 

をWORKS-同じ配列のメンバを指しているにもかかわらず、最初のコードでは機能しません。

編集 - ここでは、全機能

void show(int *l,int *r) 
{ 
    if(l==r && r==NULL) 
    { 
     printf("underflow\n"); 
    } 
    else 
    { 

     int *t,i; 
     for(t=l;t!=r;t++); 
     { 
       printf("%d-->",*t); 
     } 
     printf("%d\n",*r); 

/*  for(t=l,i=0;i<r-l;i++,t++) 
      printf("%d-->",(*t)); 
     printf("%d\n",*r);*/ 
    } 
} 

コメントアウト領域がショーに動作していない()です。 質問は閉じた、愚かなエラー!!! **あなたがここ1に対処するためのポイントを設定for(t=l;t<r;t++);編集

+0

@ NiklasB:左と右のポインタを指定すると、彼は循環バッファを実行しているように見えます。 –

+0

@ジェリー:うん、それは意味があると思う。 –

+1

'left'や' right'は表示されず、 'l'と' r'だけが表示されます。機能全体を表示すると役立ちます。 – Caleb

答えて

4
for(t=l;t!=r;t++); 

(あなたは私に何をしたか)あなたが望むのint varibleとして使用するループのためにトンをderefercingみては?それを除く。つまり、何もせずにをインクリメントし、t(今はr)と指定した値を印刷し、その後に " - >"と指定した値をrと指定します。

+0

オハイ..愚かなエラー、ありがとう!!!!!! – ksb

+0

は完全にその1つを逃した... –

0

がセミコロンを参照してください

+0

それは意図です、OPは最後の要素の後に " - >"を望んでいません。 –

+0

最初は私は両端キューがいくつかの別々のメモリブロックで構成されているので、別々の順序で割り当てることができます(ここではメモリレイアウトについて説明しています)。それは私たちが1つだけのブロックを扱っているように私の元の答えを削除します –