結構體變數如何賦值可以直接賦值嗎

2022-01-07 18:25:32 字數 4176 閱讀 4926

1樓:匿名使用者

結構體變數是可以直接賦值的;

定義結構體型別,然後用這個型別定義出來的變數就是結構體變數;

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

2樓:匿名使用者

結構體的賦值僅僅是簡單的淺複製,如果涉及到指標型別就會出問題,比如:

struct birthday

;struct stu;

3樓:匿名使用者

可以,但是不太推薦.

--------------------

可以在定義時賦值,也可以通過變數來賦值,c++裡面還可以通過建構函式,成員函式來賦值等...

struct yy a = ;

struct yy b;

b.i = 2;

b.f = 1.1;

4樓:匿名使用者

結構體變數可以直接賦值的。

5樓:

可以直接賦值,但是在有指標的情況下會出現指向同一位置的情況,在這種情況下,釋放掉其中之一那麼,另一個的指標使用會出現非法.

因為他們有預設的賦值過載.但是只可以簡單的將對應的值一一賦給對方.

同一型別用得著宣告兩次麼?這麼多人都說了,可以呀.只是有些像上面說的那種情況你要注意一下.

6樓:小阿橙

好象可以哎,我也不是很懂!!嘿嘿.只可參考!

7樓:匿名使用者

struct a

aa;struct b

bb;bb = aa;

暈,明顯重複定義了

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

8樓:問明

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

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;

9樓:匿名使用者

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

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

10樓:匿名使用者

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

struct test a,b;

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

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

struct test1 a;

c#使用了未賦值的區域性變數,如何賦值?

11樓:匿名使用者

string name1 = 「」;

string name2 = 「」;

int age1 = 0;

int age2 = 0;

定義變數是直接初始化,養成好的習慣可以減少很多不必要的錯誤。

12樓:汝諾步天心

假設你的number=-1,你會發現你的if一條都沒執行,這時候cost等於多少呢?編譯器沒辦法確回定答cost的值,所以會給你標紅,你需要在定義它的時候初始化一下,如cost=0(如果是c#

7.0,你可以用cost=default),或保證你的if能覆蓋所有情況。

13樓:無秉朋佳

對於string型別的變數,最好的初始賦值是string

name1=null;

string

name2=null;

而判斷是否賦值最好是用

if(name1.length>1)

判斷,之後再輸出比較好

14樓:空湘章元瑤

console.writeline("第二個學員的姓名(0),年齡歲",

name2,

age2);

這句話好像沒有給值吧,樓主

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

15樓:斂雋潭驪文

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

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

16樓:自我程式設計

結構體變數直接賦值,就是其本身記憶體地址空間,按照地址分佈直接賦值。

所以兩個一樣的結構變數可以直接賦值。

但是如果結構成員中有指標,且指標指向的地址大小不一樣,是不能直接賦值的。

17樓:丿艾瑞灬莉婭

可以,直接用 '=' 即可

結構體變數和變數之間是怎樣賦值 5

18樓:匿名使用者

結構體要每個成員變數賦值,而普通變數直接賦值

19樓:微微姐的城堡

不行哦,型別不同,又不能進行型別轉化,如果你一定要這樣賦值的話,你就過載運算子吧

20樓:匿名使用者

逐項、逐變數賦值

比如:struct a,b; a.a=1; a.b=2; b.a=a.a; b.b=a.b;

21樓:張春吉

struct a

a a;

a.m_age = 20;

a.m_name = "cj";

希望能幫到你

22樓:yn天會

結構體變數名.變數=變數=

23樓:記住一座城

結構體變數和普通變數因為型別不同,所以不能相互賦值。

比如struct node

;node a,b;

int e;

char n;

a=b,a.ele=e,b.name=n;正確,同型別賦值ele=e,name=n;錯誤,必須指明是哪一個變數的成員比如a.ele=e,b.name=n;

指標變數能直接賦值嗎,可以對指標變數進行賦值嗎,例如 p

指標變數一般是不可以直接賦值的,因為直接賦值的話,就是讓這個指標指向這個賦值的地址,萬一這個地址是你計算機內部的某個程式的或者是系統的某個地址,而你對這個指標的值又改變了,那麼你的計算機系統就會出現問題,可能導致系統不能正常執行活著程式出錯等等。但是null是一個空地址,即0,它不指向任何地址,所以...

t sql 如何在查詢中給變數賦值

select dwdm,wfhyy case when getdate zncsrq 90 then 期 內 when zfmz 01 or fnmz 01 then 少數民族 end from qhry 參考思路 把查詢結果綁到datatable,然後在datatable裡取出來賦值,參考例如如下...

在sql儲存過程中如何宣告變數賦值變數最好有

sql server 儲存過程中怎麼將變數賦值 sql賦值語句 declare test1 int select test1 111 set test1 222 sql函式賦值,假定count 是自定義函式declare test2 int select test2 count from sys.s...