私は2つの構造体num1とnumを同一視しています。私がしたいのは、残りのフィールドがnumのフィールドと等しくなければならない他のフィールドを変更せずに、num1のフィールドの1つを変更することです。しかし、次のコードは、numとnum1の両方のフィールドを変更することになります。誰か理由を教えてもらえますか?2つの構造体を似ているが、フィールドの1つを変更したい
#include <stdio.h>
#include <stdlib.h>
int main()
{
typedef struct
{
int one;
int two;
}Num;
Num *num;
Num *num1;
num=malloc(sizeof(Num));
num->one=1;
num->two=2;
// num1=malloc(sizeof(Num));
num1=num;
num1->one=10;
//num1->two=2;
printf("%d %d\n",num1->one,num->one);
return 0;
}
私は別の方法を知っています。 num1のメモリを割り当てます。 numのすべてのフィールドをnum1に等しくして、変更したいフィールドを除いてください。他の方法はありますか?
「2つの構造体を」。あなたは2つの構造体を持っていません。あなたは同じ構造体への2つのポインタを持っています。 – kaylum
'num'と' num1'の両方がポインタであることはご存知でしょうか? –
はい、私はそれらが構造体へのポインタであることを知っています。 num1のフィールドを変更するために言及した方法以外の方法はありますか? @Sourav –