Ⅰ c語言 結構體的定義及使用
額·你的初始化有錯誤~~
yinkailin.Name[] = "yinkailin";這樣初始化是不行滴~
加頭文件#include <string.h>
然後這樣初始化~
strcpy(yinkailin.name, "yinkailin");
Ⅱ C語言中定義結構體的幾種方法
1、先定義結構體類型,再定義結構體變數。
structstudent{
charno[20];//學號
charname[20];//姓名
charsex[5];//性別
intage;//年齡
};
structstudentstu1,stu2;
//此時stu1,stu2為student結構體變數
2、定義結構體類型的同時定義結構體變數。
structstudent{
charno[20];//學號
charname[20];//姓名
charsex[5];//性別
intage;//年齡
}stu1,stu2;
3、直接定義結構體變數。
struct{
charno[20];//學號
charname[20];//姓名
charsex[5];//性別
intage;//年齡
}stu1,stu2;
(2)c語言定義結構體擴展閱讀
結構體的定義
在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregatedatatype)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。
結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。結構體,他就將不同類型的數據存放在一起,作為一個整體進行處理。
Ⅲ c語言中定義結構體有哪些方法
1.結構體類型數據的定義方法和引用方法
定義結構體:struct 結構體名
{
成員列表
};
定義結構體類型的變數:有三種形式
① 定義類型時定義變數:struct 結構體類型名
{
成員列表
}變數名列表;
② 直接定義結構類型變數:struct
{
成員列表
}變數名列表;
③ 由已定義的結構體類型來定義變數:struct 結構體類型名變數名列表;
引用結構體類型變數:在定義了結構體類型變數後,採用下列方法引用結構體類型的
變數:
結構體變數名.成員名
這里"."是成員(分量)運算符,它在所有的運算符中優先順序最高。
使用結構體時注意:
(1)結構體類型和結構體類型變數是不同的概念,定義結構體類型變數時應先定義
結構體類型,然後再定義變數屬於該類型。
(2)定義了—個結構體類型後,系統並沒有為所定義的各成員項分配相應的存儲空
間。只有定義了一個結構體類型變數,系統才為所定義的變數分配相應的存儲空間。結構
體類型變數佔用內存的位元組數是所有成員佔用內存長度之和。
(3)結構體成員的引用。如果一個結構體中又嵌套一個結構體,則要訪問一個成員
時,應採取外層向內層逐級訪問的方法。
Ⅳ C語言中 結構體定義的問題
在某些計算機內部會有一個存儲對齊,放在一起時實現對齊更簡單,這樣會節省存儲空間。
Ⅳ C語言結構體數組的定義
所謂結構體數組,是指數組中的每個元素都是一個結構體。在實際應用中,C語言結構體數組常被用來表示一個擁有相同數據結構的群體,比如一個班的學生、一個車間的職工等。
結構體可以存儲不同的數據類型,將他們互相聯系起來。結構體數組可以連續存儲多個結構體,和數組作用相似。比如想定義同一個最小外接矩形的四個坐標值,並給予這個矩形一個特徵編號。當需要存儲多個最小外接矩形的信息時,就需要動態申請一個結構體數組。
struct 結構體類型名{類型名 成員名;類型名 成員名;……},先聲明結構體類型,再定義結構體變數名。聲明結構體類型,不分配空間,定義結構體類型變數,就要分配內存空間。
(5)c語言定義結構體擴展閱讀:
結構體數組指針類型:
一個結構體變數的指針就是該變數所佔據的內存段的起始地址。可以設一個指針變數,用來指向一個結構體變數,此時該指針變數的值是結構體變數的起始地址,指針變數也可以用來指向結構體數組中的元素。
1、類型一:
指向結構體變數的指針引用結構體變數中的成員。
2、類型二:
用結構體變數和指向結構體變數的指針構成鏈表,鏈表是一種常見的重要的數據結構。鏈表有一個「頭指針」變數,以head表示,它存放一個地址。該地址指向一個元素。
鏈表中的每一個元素稱為「結點」,每個結點都應包括兩個部分:
一是用戶需要用的實際數據,
二是下一個結點的地址。
鏈表中各元素在內存中的存儲單元可以是不連續的。要找某一元素,可以先找到上一個元素,根據它提供的下一元素地址找到下一個元素。這種鏈表的數據結構,必須利用結構體變數和指針才能實現。
可以聲明一個結構體類型,包含兩種成員,一種是用戶需要用的實際數據,另一種是用來存放下一結點地址的指針變數。
參考資料來源:網路—結構體類型—數組
Ⅵ c語言如何動態的定義結構體
這是不可能的。C語言的結構體是一種類型,在使用之前一定要定義或一個「假」聲明。你的需求不合理。
Ⅶ c語言中關於結構體類型的定義
struct在C語言中是一個關鍵字,用於定義結構數據類型。
問題中的兩種定義的區別在於第一種是給student數據類型,重新定義了一個類型別名,而第二種則單純的表示一種叫做student的數據結構類型。兩者的主要區別在於後面直接定義變數時。如下代碼,則可以直接在結構體後面定義一個zhang_san的結構體變數。
struct student
{
int num;
struct student *next;
}zhang_san;
而第一種的定義,則會出現錯誤。
typedef struct student
{
int num;
struct student *next;
}student zhang_san;
擴展:
「結構」是一種構造數據類型,現在一般叫做用戶自定義數據類型,它是由若干「成員」組成的。 每一個成員可以是一個基本數據類型或者又是一個構造類型。 結構即是一種「構造」而成的數據類型, 那麼在說明和使用之前必須先定義它,也就是構造它。如同在說明和調用函數之前要先定義一樣。
定義一個結構的一般形式為:
struct結構名
{
//成員表列
};
成員表由若干個成員組成, 每個成員都是該結構的一個組成部分。對每個成員也必須作類型說明,其形式為:「類型說明符 成員名;」。成員名的命名應符合標識符的書寫規定。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
在這個結構定義中,結構名為stu,該結構由4個成員組成。 第一個成員為num,整型變數;第二個成員為name,字元型數組;第三個成員為sex,字元型變數;第四個成員為score,浮點型變數。 應注意在括弧後的分號是必不可少的。
Ⅷ C語言關於結構體定義
這個我只能給你一個思路,利用聯合體以及位域
Ⅸ C語言結構體的定義
C++把結構體視作 類,可以直接用類名定義變數,而C不可以!
struct Link{
struct Food f;
struct Link *next; //這兩個加上Struct就可以在C中通過了
};
Ⅹ c語言如何定義結構體變數
首先,定義一個結構的一般形式為:
struct結構名
{
//成員表列
};
成員表由若干個成員組成,每個成員都是該結構的一個組成部分。對每個成員也必須作類型說明,其形式為:「類型說明符成員名;」。成員名的命名應符合標識符的書寫規定。例如:
structstu
{
intnum;
charname[20];
charsex;
floatscore;
};
在這個結構定義中,結構名為stu,該結構由4個成員組成。第一個成員為num,整型變數;第二個成員為name,字元型數組;第三個成員為sex,字元型變數;第四個成員為score,浮點型變數。應注意在括弧後的分號是必不可少的。
然後,當結構定義完成後,即創建了一種數據類型,可以像int、float等內置類型一樣使用,以上面定義的stu結構體來和int類型對比著看。
inta;//定義一個int類型的變數a
stua;//定義一個stu類型的變數a
int*p;//定義一個int類型的指針p
stu*p;//定義一個stu類型的指針p
inta[10];//定義一個int類型的數組a,它有10個元素,每個元素是int類型
stua[10];//定義一個stu類型的數組a,它有10個元素,每個元素是stu類型。