2016-04-10 4 views
-2

すでにデータ構造名ノードを作成している場合は、int変数と別のノードのストアアドレスへのポインタを持つデータ構造を作成したことを意味します。しかし、その後、なぜ私たちは、代わりにノード*starttemptemp1のノード*start*tempとしてtemptemp1start*temp1を宣言していますか? temptemp1としてCでリンクリストの構造体型へのポインタとしてノードを作成していますか?

一時的な「ノード」として、後のプログラムで使用されており、ノードの構造体へのポインタとして、それらを宣言すると、それを動作させるべきではありませんが、このノード*temp*temp1作品。どうして?要するに

理由temp1、代わりにノードtempの構造へのポインタとして宣言これらtemptemp1であり、なぜ彼らは(すなわちノード*temp*temp1)が働いていますか?

+1

どのように使用されるかによって異なります。本当にノードをコピーする必要がある場合は、正しいと思うので、ポインタではなくノードが必要になります。しかし、ノードへの一時的なポインタが必要になる可能性が高くなります。その場合、宣言はまさに必要なものです。しかし、コードを見ることなく、私たちは推測することができます。 –

+0

*ヘルプセンター*の*要求方法*セクションに必要な、*あなたの質問に文脈を与えることは非常に困難です*関連性のある検証された*コードが欠落しています。 – Wtower

答えて

0

Assumption/Guessに基づいて、あなたの質問に使用できるコードはありません。例えば

、あなたがstruct node temp, temp2を使用している場合、あなたは、このよう

struct node { 
    int value; 
    struct node *link; 
}; 

をリンクリストを作成している場合、それは内のすべてのメンバのメモリサイズに等しいメモリサイズを持つ2つの構造体変数temptemp2を作成しますあなたがstruct node *temp, *temp2を使用している場合int + struct node *

ある構造が、それはstruct node変数を指すことができる2つのポインタを作成します。ポインタがメモリ位置を指し示すだけで、メモリが消費されることはありません。あなたは

、などの
struct node start; 
start.value = 10; 
start.link = 2000; //hypothetically for example, address should be in hex 
struct node temp = start; 
temp.value = 20; // Will change only value to 20 for temp variable only 

を行っている場合

は、それではstartのすべてのメンバーの値がtemp部材の内部にコピーされます。 starttempのメモリを分けてください。

そして、あなたは次のように実行している場合、

struct node start; 
start.value = 10; 
start.link = 2000; 
struct node *temp = &start; 
temp->value = 20; //Will change value to 20 for both temp and start. As temp is pointer not a separate variable. 

が、その後 tempstart位置へのポインタ変数のポイントです。

関連する問題