A. c語言結構體變數
看一個例子吧
typedef
struct
_my_date
{
int
y;
int
m;
int
d;
}my_date,MY_DATE,*PMY_DATE;
定義變數合法的有
struct
_my_date
var;
/*定義一個結構體變數
var*/
struct
_my_date
*
var;
/*定義一個結構體變數指針
var*/
my_date
var;
/*定義一個結構體變數
var*/
my_date
*
var;
/*定義一個結構體變數指針
var*/
MY_DATE
var;
/*定義一個結構體變數
var*/
MY_DATE
*
var;
/*定義一個結構體變數指針
var*/
PMY_DATE
var;
/*定義一個結構體變數指針
var*/
分析答案:
A)可用S定義結構體變數
錯,應該用
struct
S
var;
/*var是變數*/
B)可以用T定義結構體變數
錯,可以用T定義結構體變數指針
C)可以用T定義指向結構體變數的指針
對
D)T是struct
S類型的變數
錯,T是結構體指針類型
相當於
T
<=>
struct
S
*
B. C語言中定義結構體及其變數
1.結構體類型數據的定義方法和引用方法
定義結構體:struct 結構體名
{
成員列表
};
定義結構體類型的變數:有三種形式
① 定義類型時定義變數:struct 結構體類型名
{
成員列表
}變數名列表;
② 直接定義結構類型變數:struct
{
成員列表
}變數名列表;
③ 由已定義的結構體類型來定義變數:struct 結構體類型名變數名列表;
引用結構體類型變數:在定義了結構體類型變數後,採用下列方法引用結構體類型的
變數:
結構體變數名.成員名
這里"."是成員(分量)運算符,它在所有的運算符中優先順序最高。
使用結構體時注意:
(1)結構體類型和結構體類型變數是不同的概念,定義結構體類型變數時應先定義
結構體類型,然後再定義變數屬於該類型。
(2)定義了—個結構體類型後,系統並沒有為所定義的各成員項分配相應的存儲空
間。只有定義了一個結構體類型變數,系統才為所定義的變數分配相應的存儲空間。結構
體類型變數佔用內存的位元組數是所有成員佔用內存長度之和。
(3)結構體成員的引用。如果一個結構體中又嵌套一個結構體,則要訪問一個成員
時,應採取外層向內層逐級訪問的方法。
求採納為滿意回答。
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類型。
D. C語言中定義結構體類型變數的方法
1.結構體類型數據的定義方法和引用方法
定義結構體:struct
結構體名
{
成員列表
};
定義結構體類型的變數:有三種形式
①
定義類型時定義變數:struct
結構體類型名
{
成員列表
}變數名列表;
②
直接定義結構類型變數:struct
{
成員列表
}變數名列表;
③
由已定義的結構體類型來定義變數:struct
結構體類型名變數名列表;
引用結構體類型變數:在定義了結構體類型變數後,採用下列方法引用結構體類型的
變數:
結構體變數名.成員名
這里"."是成員(分量)運算符,它在所有的運算符中優先順序最高。
使用結構體時注意:
(1)結構體類型和結構體類型變數是不同的概念,定義結構體類型變數時應先定義
結構體類型,然後再定義變數屬於該類型。
(2)定義了—個結構體類型後,系統並沒有為所定義的各成員項分配相應的存儲空
間。只有定義了一個結構體類型變數,系統才為所定義的變數分配相應的存儲空間。結構
體類型變數佔用內存的位元組數是所有成員佔用內存長度之和。
(3)結構體成員的引用。如果一個結構體中又嵌套一個結構體,則要訪問一個成員
時,應採取外層向內層逐級訪問的方法。
求採納為滿意回答。
E. C語言問題結構體變數
程序首先定義了一個名為 struct S 的結構體類型,包含一個整形變數n,一個整形數組,整形變數可用來標記數組的長度。
然後定義了一個名為 f 的函數,該函數定義了一個指針p作為形參,指針類型為struct S,函數完成的功能是排序。
主函數部分先定義了一個struct S類型的變數,名為 s,並初始化。然後調用函數 f,將變數 s的地址傳給指針p,則 p 指向結構體變數 s,在函數 f 中,第一曾循環,p->n-1 應理解為(p->n)-1,因為p指向變數s,因此p->n即是取結構體變數s中的變數 n,從主程序中可見n被初始化為10,所以p->n-1值為9,第二層循環是依次取結構體變數s中數組a的兩個相鄰成員,比較兩者大小並交換,最終完成從小到大排序的功能。主函數中的for循環是將s中的數組a輸出(已被函數f排序過了)
F. 關於C語言結構體變數
b=a和p=stud的寫法是錯誤表達,因為a和b都是常量,它的值是不可以改變的,stud是一個結構體變數,可以這樣寫p=&stud(其中p代表一個指向結構體的指針變數),代表將結構體變數stud的首地址賦給p;stud就是一個變數,但是不可以直接引用,只能引用結構體裡面的變數比如:
struct student
{
int num;
char name[20];
int age;
}stu;
只能這樣引用:stu.num或者stu->num.
G. c語言結構體類型和結構體變數分別是什麼
結構體(structure)是一個或多個相同數據類型或不同數據類型的變數集合在一個名稱下的用戶自定義數據類型。
struct
結構體名
{
成員列表;
};
H. C語言中,結構體里變數的定義
要知道這個問題很重的一個問題就是,指針的作用是什麼,知道這個了你就知道為什麼要定義指針了。
很簡單的道理,如果你需要的是一個獨立(或者說是一個孤立的值)的時候,你就不需要定義成指針。而當你的結構中包含了一系列的有序的數據或者是一系列數據對的時候就將其定義成一個指針。
原因在於,定義成一個指針的話方便你往下讀取後面的數據,通過指針偏移就可以實現,或者你的數據分成了指針部分和數據部分的時候也需要定義成一個指針,對於這個 你學過數據結構的話就很好理解了。
祝你學習進步!
I. C語言中的私有整型數據成員是什麼意思
C語言裡面沒有私有成員變數的概念,
這是C++才有的概念。
但可以通過下面的方法模擬實現結構體的成員變數私有化:
將結構體的定義放入源碼件中實現,頭文件只放聲明。
比如有如下結構體(obj.h文件中定義):
struct Obj {
int id;
char *name;
};typedef struct Obj Obj;
並定義如下變數:
Obj *o;
正常情況下,可以通過如下代碼正常訪問結構體中的變數:
printf("id : %d\n",o->id);
如果將結構體的定義放入源文件中,上述代碼將會報如下錯誤:
error: dereferencing pointer to incomplete type printf("id : %d\n",o->id);
如需外部訪問,可通過添加相關介面實現,比如:
int get_obj_id(const Obj* o){
int ret = 0;
if(o) {
ret = o.id;
}
return ret;
}
請採納,謝謝。
J. C語言結構體變數問題
您好,很高興回答您的問題。
在c語言中,有一種特殊的類型,就是結構體類型,這是構造類型的一種,也就是由若干個基本類型組合構成的特殊類型。
結構體類型與其他的基本類型一樣,要先定義再使用。那麼定義分成兩部分,一個是定義結構,也就是包含哪些內容;另一個就是定義類型,表示用來具有這個類型的變數。
您的程序中,STU就是定義結構,t就是具有這種類型的數組,n就是具有這種類型的變數。兩者是不同的概念,需要區別開來。