2017-02-04 11 views
0

私はvoid型のポインタである 'data'というデータ型を持っています。これは別の関数の引数として使用され、プログラマがその特定の関数の引数として任意のデータ型を送信できるようにします。C整数と印刷でのメモリ割り当ての問題

割り当てを組み合わせて4つの異なる変数を使用する必要はなく、代わりに2つしか使用しないでください。私は約D、D2、DDとDD2を話している

(OBS。私がいる唯一の問題は、D、D2、DDとDD2で!Q & q2は、スタックの名前です。それらを無視している。

それが良く見えるよう
data d = (int*) malloc(sizeof(int)); 
*(int *)d = 7; 

data d2 = (int*) malloc(sizeof(int)); 
*(int *)d2 = 7; 

data dd = (int*) malloc(sizeof(int)); 
*(int *)dd = 8; 

data dd2 = (int*) malloc(sizeof(int)); 
*(int *)dd2 = 8; 

stack_add(q, d); /* Adds an item so the stack is not empty.*/ 
stack_add(q2, d2); /* Adds an item so the stack is not empty.*/ 

if (!stack_isEmpty(q)) { 

    /* Removes an item and then adds an item from the first stack*/ 
    stack_remove(q); 
    stack_add(q, dd); 

    /* Adds an item and then removes one from the second stack*/ 
    stack_add(q2, dd2); 
    stack_remove(q2); 

にはどうすれば割り当てを兼ね備えていますか?

+0

なぜあなたは 'queue_front()'を投稿しませんでしたか?そして、どのような警告を受けていますか? –

+0

私はそれが欲しい整数を表示していません。それは住所などを印刷しています。私のテストを完全に台無しにする。 – Cows42

答えて

0
  1. あなたの割り当てが悪いです、なぜなら

    • それはあなたがサイズパラメータが悪い、それはsizeof(*d)あるべきNULL
    • をチェックしませんDRY原則
    • に違反します。おそらくOKですが、dataが投稿されていないためです。
  2. 悪い練習であるポインタがtypedefになっているようです。

  3. stack_firstvalue()のコードを投稿する必要があります。問題が発生している可能性があります。簡単に言えば

、あなたがあなたの投稿をコードで非常に明白なミスを持っている、とあなたはstack_firstvalue()のための興味深いコードを投稿していなかった、それは当然のバグが含まれていることを前提とするのが自然です。

+0

エラーを修正することができました。私の唯一の疑問は、私が割り当てをどのように組み合わせるかということです。私はあなたが例えばmalloc(XXX * sizeof(int))のようにできることを知っています。 – Cows42

+0

割り当てを組み合わせるとどういう意味ですか? –

+0

私は4つの変数割り当てを行います。コードを改善する方法はありませんか? – Cows42

関連する問題