在c語言中。結構體變數之間可以相互賦值嗎

2021-08-21 02:01:48 字數 1465 閱讀 7887

1樓:問明

可以直接賦值。定義結構體型別,然後用這個型別定義出來的變數就是結構體變數。

c語言在相同型別的變數間賦值時是直接記憶體複製的,即將他們的記憶體進行復制,這裡因為同樣結構體變數,屬於同一種變數,所以賦值時是按照他們的記憶體分佈來直接拷貝的。

舉例:voidmain()

stustu1={0,10};

stutemp={12,88};

stu*p1=&stu1;

stu*p2=&temp;

printf("%d-%d\n",temp.name,temp.num);

temp=stu1;

printf("%d-%d\n",temp.name,temp.num);

temp={10,10};

printf("%d-%d\n",stu1->name,stu1->num);

printf("%ld-\n",&stu1);

printf("%ld-\n",stu1);

printf("%ld-\n",&temp);

printf("%ld-\n",temp);

change(stu1,temp);

temp=stu1;

p2=p1;

printf("%d-%d\n",p2->name,p2->num);

c語言中變數間互相賦值很常見,例如:

inta,b;

a=b;

結構體也是變數(自定義變數),兩個結構體之間直接賦值按道理應該也是可以的吧,將一個結構體物件賦值給另一個結構體物件的。

例:#include"stdio.h"

structtest

inta;

intb;

intc;

char*d;

intmain()

structtestt1={1,2,3,"tangquan"};

structtestt2={0,0,0,""};

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

t2=t1;

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

return0;

2樓:匿名使用者

1、結構體變數是可以直接賦值的。定義結構體型別,然後用這個型別定義出來的變數就是結構體變數。

2、c語言在相同型別的變數間賦值時是直接記憶體複製的,即將他們的記憶體進行復制,這裡因為同樣結構體變數,屬於同一種變數,所以賦值時是按照他們的記憶體分佈來直接拷貝的。

3樓:匿名使用者

可以的,同型別的結構體變數可以。比如:

struct test a,b;

a=b;//這樣可以的。

如果是不同的型別,但是結構體沒資料型別一樣就要用memcpy拷貝記憶體(標頭檔案string.h)。例如:

struct test1 a;

c語言中如何用子函式呼叫結構體中的變數實現資料的輸入與輸出

用子函式實現結構體資料的輸入與輸出 對於多數子函式的輸入與輸出,有一定規律性可言。方法1 void型不傳值傳址呼叫與宣告。main中宣告void date in void date pout 函式定義前一定在main 前先定義結構體變數 全域性變數 然後定義輸入或輸出程式段。此時再main 呼叫即可...

c語言中怎麼把結構體陣列寫入檔案

c語言把一個結構體陣列寫入檔案分三步 1 以二進位制寫方式 wb 開啟檔案 2 呼叫寫入函式fwrite 將結構體資料寫入檔案 3 關閉檔案指標 相應的,讀檔案也要與之匹配 1 以二進位制讀方式 rb 開啟檔案 2 呼叫讀檔案函式fread 讀取檔案中的資料到結構體變數 3 關閉檔案指標 inclu...

在C語言中陣列名是地址,那麼結構體名是不是地址呢

使用 取地址運算子 才能得到結構體的地址。和陣列不一樣,單獨的結構體名不是該結構體地址的 同義詞。單獨的機構體名不是該機構體的地址。當然不是,結構體名你可以理解成一個資料型別 不是,結構體名是一個型別名 不是,必須使用 才能得到地址。c語言中陣列名是一個地址變數嗎 結構體名相當於類名,作用也與類名相...