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語言中陣列名是一個地址變數嗎 結構體名相當於類名,作用也與類名相...