-2

配列を介してcにデキューを実装しています。左と右は、デキューの左端と右端の要素を指すポインターです。show()関数は、左ポインターと右ポインターを受け取ります。void 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);

明らかに、最初のコードのポインター間の比較は、同じ配列のメンバーを指しているにもかかわらず機能していません。なぜこれが起こっているのでしょうか。

編集-これが全体の機能です

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);*/
    }
}

コメントアウトされた領域はshow()で機能していません。質問は閉じられました、ばかげたエラー!!!

4

2 に答える 2

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

そこにセミコロンがありますか?それを除く。このように、ループは何もせずに到達するtまで増分し、次に(now )を指す値が出力され、その後に「->」が続き、次に。が指す値が出力されます。rtrr

于 2012-04-04T14:47:52.337 に答える
0

編集済み**ここで1つに対処するためのポイントの設定for(t=l;t<r;t++);は、forループ内のtを逆参照して、必要なint変数として使用してみてください(iで行ったこと)

于 2012-04-04T14:36:58.427 に答える