if 結構體1結構體2 是什麼意思??結構體只是宣告瞭一下,沒有賦值

時間 2022-09-01 04:15:03

1樓:

可能你的表述有誤,應該是結構體1的指標和結構體2的指標,判斷它是不是非空,通常非空就是賦值了。

2樓:斯啦絲拉

你這個說起來比較複雜

首先你這個語句應該是編譯不過去的,if接受bool型別值,不接受你自己隨便寫的型別。

你的結構必須實現了operator bool();即你的結構必須支援到bool的隱式型別轉換。

如果沒有實現operator bool(),則要實現可以轉為bool的實現,

例如 operator void*(),operator int()等等。

如果你實現了以上轉換之一,那麼就是一般的邏輯判斷了。

例如#include

#include

struct foo

};int main()

;cout << boolalpha << "foo1: " << foo1

<< ", foo2: " << foo2 << endl;

if (foo1&&foo2)

cout << "should not be output." << endl;

system("pause");}

這個結構體需要在前面宣告一下,怎麼宣告?

3樓:刀劈華山

一般來說結構體是定義在標頭檔案中的,然後把標頭檔案包含進你的.c檔案就可以了

或者你直接在你的main.c的上面定義也可以

c語言為什麼結構體宣告的時候可以直接賦值,後面的就不行

4樓:風若遠去何人留

宣告的時候和後續賦值略有不同,在c語言中是兩種處理方法。

如有結構體

struct test

;定義的時候,可以

struct test var = ;

這樣初始化,結果為var.a = 1, var.c = 'c', var.b = 2;

但是如果後續賦值

var = ;

就會報錯。因為在c語言中不支援這種形式的操作。

不過可以取巧轉換一下,改成

var = (struct test);

這樣就可以了。 在這種情況下,系統會申請一個臨時變數,並初始化為該值,再對var進行賦值。而同型別結構體之間賦值操作是c語言規則允許的。

5樓:匿名使用者

這個涉及到一個臨時變數的問題,因為後面的a=; 不在結構體定義裡面了,出了這個結構體系統就無法識別了,所以會提示錯誤。

6樓:匿名使用者

你那個第一種做法叫初始化,c語言允許結構體初始化,但不允許第二種那樣賦值

如果你寫

struct student

;struct student a=;

也是對的,這就叫初始化

至於怎麼樣才能做到直接賦值,c語言裡面並沒有這樣的操作過載操作符也是c++裡面的了

不過你可以這樣struct student b=;a=b;

c語言裡面2個結構體之間是可以複製的

或者你也可以定義一個函式來做,函式體裡面要用挨個賦值的方式希望對你有幫助

7樓:匿名使用者

語法規定,這個好像沒原因可說

要賦值的話,你可以這樣 a.a=1;相信你也知道

c語言定義結構體並賦值後,怎樣把整個結構體傳遞給子函式?

8樓:匿名使用者

typedef struct

stru;

void fun(stru *s)

int main

有沒有辦法把一個結構體賦值給另一個結構體

9樓:

可以的哦,看下面的例子

#include

struct x;

int main();

struct x b=;

b = a;

return 0;}輸出

a.ma=1 a.mb=2 a.

mc=3.300000b.ma=2 b.

mb=4 b.mc=6.600000b.

ma=1 b.mb=2 b.mc=3.

300000

10樓:湛藍水晶

可以。結構體是直接複製的。

比如兩個相同的結構體a、b,可以用a = b;來賦值

11樓:匿名使用者

結構體裡有指標的話就要小心了...

怎麼樣將一個結構體的值賦值給另一個結構體?(兩個結構體的大小一樣,也就是理解為資料備份的意思~~~)

12樓:匿名使用者

如果這個結構體沒有指標成員的話,可以直接用「=」號賦值(目前主流的編譯器都支援這樣的賦值,如果是特別老舊的編譯器可能不支援這樣,那就要把每個成員分別賦值了)

如果有指標成員,那麼這個指標成員不能簡單的賦值,而要複製該成員指向的空間資料

13樓:紫翼魔狼

將結構體變數逐個複製,你可以寫一個函式來進行復制。

c語言結構體陣列賦值問題 如果用同一個結構體定義了2個不同的陣列1和陣列2。可以 陣列1=陣列2;

14樓:匿名使用者

不可以,要是指標的賦值就可以,例如

typedef struct a

;int main()

,,};

struct a *bb;

bb=aa;

printf("%d",(bb[0]).y);

return 0;}

15樓:

我記得這樣的陣列是不可以的,這樣只是把陣列2的地址給陣列1,兩個陣列指向同一地址了。

qsort結構體排序方法是什麼

餜拫jj鎝炰繆鏉 編譯器函式庫自帶的快速排序函式。使用qsort 排序並用 bsearch 搜尋是一個比較常用的組合,使用方便快捷。qsort 的函式原型是 void qsort void base,size t num,size t width,int cdecl compare const vo...

核糖體的結構,核糖體的組成是什麼

構成核糖體的蛋白質。大腸桿菌核糖體蛋白的初級結構均被確定。大腸桿菌核糖體的30s亞基含s1 s21共21種蛋白質,50s亞基含l1 l34共34種蛋白質。這些蛋白質已被全部分離純化。分子量約1萬到3萬。除s6 l7 l12之外全是鹼性蛋白質。這些蛋白質是免疫學上獨立的蛋白質,只有l7 l12顯示出相...

c語言中在結構體中name函式名什麼意思

這裡的name變數不是普通資料型別,是一個函式指標。1 函式指標是指向函式的指標變數。因而 函式指標 本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數 字元型 陣列一樣,這裡是指向函式。c在編譯時,每一個函式都有一個入口地址,該入口地址就是函式指標所指向的地址。有了指向...