C語言程式設計問題,麻煩用結構體,謝謝

時間 2023-06-09 06:20:03

c語言結構體定義

1樓:惠企百科

c語言結構體定義:struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體宣告的變數。

結構體是c語言中聚合資料型別(aggregatedatatype)的一類。結構體可以被宣告為變數、指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的型別,成員一般用名字訪問。

c++中的結構體是用來幹嘛的?能解決什麼問題?

2樓:匿名使用者

結構體 是一種資料結構,比如函式返回值,按常理只能返回乙個,但返回結構體型別的話,就能返回多個資料(結構體內本身包含的),而且這些資料還可以使不同的型別。

另外,封裝思想吧,把描述乙個物件的資料都放在乙個結構體中,比如乙個結構體 ren(人)

struct ren

float height;

float weight;

等等。;這樣建了乙個資料庫就比較容易管理每個人的資料了。

3樓:仲孫潔玉

typedef struct x w;

這個是標準型別。

c語言和c++都可以用。

typedef x w;

這個只有c++才可以,因為c++中可以把struct 省略掉還有問題hi我。

c語言結構體定義 25

4樓:chanrich輕輕

所謂結構體陣列,是指數組中的每個元素都是乙個結構體。在實際應用中,c語言結構體陣列常被用來表示乙個擁有相同資料結構的群體,比如乙個班的學生、乙個車間的職工等。

結構體可以儲存不同的資料型別,將他們互相聯絡起來。結構體陣列可以連續儲存多個結構體,和陣列作用相似。比如想定義同乙個最小外接矩形的四個座標值,並給予這個矩形乙個特徵編號。

當需要儲存多個最小外接矩形的資訊時,就需要動態申請乙個結構體陣列。

struct 結構體型別名{型別名 成員名;型別名 成員名;……先宣告結構體型別,再定義結構體變數名。宣告結構體型別,不分配空間,定義結構體型別變數,就要分配記憶體空間。

5樓:藥郎小跟班

結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體宣告的變數。在一般情況下,tag、member-list、variable-list這3部分至少要出現2個。

結構體的成員可以包含其他結構體,也可以包含指向自己結構體型別的指標,而通常這種指標的應用是為了實現一些更高階的資料結構如鍊表和樹等。如果兩個結構體互相包含,則需要對其中乙個結構體進行不完整宣告。

擴充套件資料:

一、結構體作用:

結構體和其他型別基礎資料型別一樣,例如int型別,char型別,只不過結構體可以做成你想要的資料型別,以方便日後的使用。

在實際專案中,結構體是大量存在的,研發人員常使用結構體來封裝一些屬性來組成新的型別。由於c語言內部程式比較簡單,研發人員通常使用結構體創造新的「屬性」,其目的是簡化運算。

結構體在函式中的作用不是簡便,其最主要的作用就是封裝。封裝的好處就是可以再次利用。讓使用者不必關心這個是什麼,只要根據定義使用就可以了。

二、結構體的大小與記憶體對齊:

結構體的大小不是結構體元素單純相加就行的,因為我們主流的計算機使用的都是32bit字長的cpu,對這型別的cpu取4個位元組的數要比取乙個位元組要高效,也更方便。

所以在結構體中每個成員的首位址都是4的整數倍的話,取資料元素時就會相對更高效,這就是記憶體對齊的由來。每個特定平台上的編譯器都有自己的預設「對齊係數」(也叫對齊模數)。

程式設計師可以通過預編譯命令#pragma pack(n),n=1,2,4,8,16來改變這一係數,其中的n就是你要指定的「對齊係數」。

三、結構體的規則:

1、資料成員對齊規則:結構(struct)(或聯合(union))的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員的對齊按照#pragma pack指定的數值和這個資料成員自身長度中,比較小的那個進行。

2、結構(或聯合)的整體對齊規則:在資料成員完成各自對齊之後,結構(或聯合)本身也要進行對齊,對齊將按照#pragma pack指定的數值和結構(或聯合)最大資料成員長度中,比較小的那個進行。

3、結合可推斷:當#pragma pack的n值等於或超過所有資料成員長度的時候,這個n值的大小將不產生任何效果。

c語言結構體是什麼?

6樓:檸檬本萌愛生活

c語言結構體(struct)從本質上講是一種自定義的資料型別,只不過這種資料型別比較複雜,是由 int、char、float 等基本型別組成的。你可以認為結構體是一種聚合型別。

在實際開發中,我們可以將一組型別不同的、但是用來描述同一件事物的變數放到結構體中。例如,在校學生有姓名、年齡、身高、成績等屬性,學了結構體後,我們就不需要再定義多個變數了,將它們都放到結構體中即可。

簡介。關鍵字struct和結構體名組合成一種型別識別符號,其地位如同通常的int、char等型別識別符號,其用途就像 int 型別識別符號標識整型變數一樣可以用來定義結構體變數。

定義變數以後,該變數就可以像定義的其他變數一樣使用了;成員又稱為成員變數,它是結構體所包含的若干個基本的結構型別,必須用「{}括起來,並且要以分號結束,每個成員應表明具體的資料型別。

C語言結構體部分程式設計問題

include include define n 10 struct student int calcmath struct student stu n int a int malloc sizeof int 2 a 0 max a 1 min return a void main 編寫程式 從鍵盤...

c語言程式設計問題,C語言程式設計問題

include void main else if b 由於b 1,所以 b的值為false,所以不進入else if b else printf d d d 由於d的值沒有改變,輸入初始值d 20 include main include main else if b 此時b 1,b 0為假els...

C語言簡單程式設計問題,C語言程式設計問題

接收字串要用gets c 不然只要接收到空格就停止了顯示字串長度可以用printf 5d strlen c 在前面包含 顯示字串要用puts c 函式 for迴圈的範圍沒有包括下面if c i a c i a include include define f 99 void main printf ...

c語言程式設計問題請教,C語言程式設計問題請教

veket的小號 已測試,正確 c free 4.1 mingw 3.4.5 veket的小號 include void trimfrnt char int main void trimfrnt char s include char trimfrnt char s void main char t...

要求用C語言程式設計,用C語言程式設計?

不知道我做得對不對了,請大家指正吧!include void main else if a 1 可以設定兩種狀態,0就是不去,1就是去。把a,b,c,d,e,f全部初始化為0,說明它們在最開始都是不去的。然後根據下面的條件來判斷誰是1,就說明誰去。用c語言程式設計?5 求助,c語言怎麼編寫程式啊?您...