當前位置:首頁 » 編程語言 » c語言結構體沒有名字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言結構體沒有名字

發布時間: 2022-12-26 13:37:49

『壹』 c語言中結構體的問題

typedef就是自己定義一個變數類型,就像int,float,double就都是一個變數,然後你可以自己定義一個變數類型,使用的是已有的變數進行組合。
這個結構體就叫STREC。
都可以。
很多時候結構體是這樣定義的
typedef struct STREC
{
char num[10];
double s;
} ;
這樣就單單表示一個新結構的名字,沒有實例化。
像你的情況是都可以是用的,既能作為變數,有能作為實例化對象。

『貳』 C語言對結構體的自命名的方法和規則

1.結構體類型數據的定義方法和引用方法
定義結構體:struct 結構體名
{
成員列表
};
定義結構體類型的變數:有三種形式
① 定義類型時定義變數:struct 結構體類型名
{
成員列表
}變數名列表;
② 直接定義結構類型變數:struct
{
成員列表
}變數名列表;
③ 由已定義的結構體類型來定義變數:struct 結構體類型名變數名列表;
引用結構體類型變數:在定義了結構體類型變數後,採用下列方法引用結構體類型的
變數:
結構體變數名.成員名
這里"."是成員(分量)運算符,它在所有的運算符中優先順序最高。
使用結構體時注意:
(1)結構體類型和結構體類型變數是不同的概念,定義結構體類型變數時應先定義
結構體類型,然後再定義變數屬於該類型。
(2)定義了—個結構體類型後,系統並沒有為所定義的各成員項分配相應的存儲
間。只有定義了一個結構體類型變數,系統才為所定義的變數分配相應的存儲空間。結構
體類型變數佔用內存的位元組數是所有成員佔用內存長度之和。
(3)結構體成員的引用。如果一個結構體中又嵌套一個結構體,則要訪問一個成員
時,應採取外層向內層逐級訪問的方法。

『叄』 結構體c語言是什麼

在C語言中,結構體(struct)指的是一種數據結構,是C語言中復合數據類型(aggregate data type)的一類。

結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。

一、成員訪問

結構體成員依據結構體變數類型的不同,一般有2種訪問方式,一種為直接訪問,一種為間接訪問。直接訪問應用於普通的結構體變數,間接訪問應用於指向結構體變數的指針。

直接訪問使用結構體變數名.成員名,間接訪問使用(*結構體指針名).成員名或者使用結構體指針名->成員名。相同的成員名稱依靠不同的變數前綴區分。

二、變數存儲

在內存中,編譯器按照成員列表順序分別為每個結構體變數成員分配內存,當存儲過程中需要滿足邊界對齊的要求時,編譯器會在成員之間留下額外的內存空間。

如果想確認結構體佔多少存儲空間,則使用關鍵字sizeof,如果想得知結構體的某個特定成員在結構體的位置,則使用offsetof宏(定義於stddef.h)。

匿名struct

匿名struct、匿名union以及C++的匿名class,是指既沒有類型名,也沒有直接用這種類型定義了對象;如果緊隨類型定義之後,又定義了該類型的對象,就不算是匿名類型,與普通情形的使用是一樣的。

匿名類型作為嵌套定義,即在一個外部類(這里的類是指struct、union、class)的內部定義,則編譯器就在匿名類型定義之後定義一個無名變數,並把該匿名類型的數據成員的名字提升到匿名類的外部類的作用域內。

如果匿名類型是連續嵌套,則最內部的匿名類型的成員名字被提升到最外部的可用變數名字訪問的類的作用域內。

『肆』 c語言。結構體那邊的求大師,,我就想問下面這個結構體,沒有struct,也沒有成員名,這是怎麼回事,

如果用
typedef struct
{
.....;
}STREC;
// 這樣定義結構體,定義結構體變數的時候就可以不用寫struct;
初始化的時候只要按順序填入初始值就可以了,不用寫成員名的

『伍』 c語言問題,為什麼用結構體姓名一欄輸不出來,程序如下

對的 就是因為你沒有用getchar()也就是沖掉回車鍵

『陸』 C語言中結構的定義不帶名稱與帶了名稱有什麼不同

個人認為沒什麼多大的不同,我也關注中.希望有高手說一下.其實typedef是自定義類型,像第一個的typedef有點多餘的意思,因為後面的都沒有說出自己的自定義是什麼類型,
第二就是最常見的了,以後你寫這個結構體的時候就可以用SC來代表struct C,而不用每一次用到這個結構體時都寫成struct C /*名*/
第三個我也有點看不懂,望有人能解決,個人認為第三個和第二個沒有區別.

『柒』 c語言結構體使用時能省略結構體名稱嗎

vb有with語句,因此可以這樣使用:
with(對象名)
......
End With
而C語言沒有類似的語句,因此不可以。

『捌』 C語言的結構體名可以為空嗎比如struct {……}

結構的名稱可以為空,看下例:

intmain()
{
struct{
intp;
}a,b;
a.p=1;
return0;
}

這段代碼中定義了兩個結構體變數a和b。但是在後面的代碼里,不能再使用這個結構定義其他的變數。因為它沒有名字。


如有幫助,請點擊採納按鈕,謝謝支持!

『玖』 c語言問題 圖中定義結構體為什麼要加typedef,這樣不就沒有結構體名了么,定義day函數時參數

在C中定義一個結構體類型要用typedef:
typedef struct Student
{
int a;
}Stu;
於是在聲明變數的時候就可:Stu stu1;(如果沒有typedef就必須用struct Student stu1;來聲明)
這里的Stu實際上就是struct Student的別名。Stu==struct Student
另外這里也可以不寫Student(於是也不能struct Student stu1;了,必須是Stu stu1;)
typedef struct
{
int a;
}Stu;

『拾』 C語言定義結構體時,為什麼只有name前有*,其他變數前沒有

定義結構體變數其實就跟定義普通的變數相似,比如你在定義指針變數的時候,會有這樣的定義:int *p;同樣在定義結構體變數的時候也有這樣的定義。
就拿你說的這個而言,name 表示的就是一個指針型的結構體變數。它裡面存的是一個地址,這個地址就是它所指向的那個結構體的首地址。
總的來說*一般情況下表示的就是指針