當前位置:首頁 » 編程語言 » c語言結構體變數

c語言結構體變數

發布時間: 2023-10-11 12:15:26

c語言中如何定義全局結構體變數

結構的定義

用戶定義自己所需要的結構型,可以採用下列定義語句:

struct結構型名
{數據類型符1成員名1;
數據類型符2成員名2;
數據類型符3成員名3;
...
數據類型符n成員名n;
};

定義結構型變數的方法有三種,在定義的同時,可以給變數的每個成員賦初值。

  1. 先定義結構型,後定義變數

例如:

structstudent
{longnumber;
charname[10];
charsex;
floatscore[3];
};
...
structstudentx,y;/*定義student結構型的變數x和y*/

在定義結構型變數的同時,可以對結構型變數的所有成員賦初值。

例如:

structstudentx={100001L,"zhao1",'f',{89,94,86}},
y={100002L,"zhao2",'m',{78,86,92}};

2.定義結構型的同時定義變數

這種方法是將結構型的定義和變數定義同時進行。然後仍然可以使用這種結構型來定義其他的變數。

例如:

structstudent
{longnumber;
charname[10];
charsex;
floatscore[3];
}x={1000001L,"zhao1",'f',{89,94,86}};/*定義結構型同時定義變數並賦值*/
...
structstudenty={100002L,"zhao2",'m',{78,86,92}}
/*這個語句是正確的是因為前面定義了數據類型符structstudent*/

3.定義無名稱的結構型的同時定義變數

這種方法是將結構型定義和變數的定義同時進行,但省略了結構型的名稱,以後將無法使用這種結構型來定義其他變數。例子與2的例子差不多,只是因為沒有定義結構型的名稱,所以後面對y的賦值就不可用。


從變數的生存期來分,我們把生存期覆蓋了定義點到整個程序結束的變數成為具有全局壽命的變數,簡稱「全局變數」。

習慣上結構定義都是在main函數之前的,從這一點上看,結構都是全局變數,不知道這樣回答是不是讓你滿意。

Ⅱ 在C語言中。結構體變數之間可以相互賦值嗎

可以直接賦值。定義結構體類型,然後用這個類型定義出來的變數就是結構體變數。

C語言在相同類型的變數間賦值時是直接內存復制的,即將他們的內存進行復制,這里因為同樣結構體變數,屬於同一種變數,所以賦值時是按照他們的內存分布來直接拷貝的。

舉例:

voidmain()

STUstu1={0,10};

STUtemp={12,88};

STU*p1=&stu1;

STU*p2=&temp;

printf("%d-%d\n",temp.name,temp.num);

temp=stu1;

printf("%d-%d\n",temp.name,temp.num);

temp={10,10};

printf("%d-%d\n",stu1->name,stu1->num);

printf("%ld-\n",&stu1);

printf("%ld-\n",stu1);

printf("%ld-\n",&temp);

printf("%ld-\n",temp);

change(stu1,temp);

temp=stu1;

p2=p1;

printf("%d-%d\n",p2->name,p2->num);

(2)c語言結構體變數擴展閱讀:

C語言中變數間互相賦值很常見,例如:

inta,b;

a=b;

結構體也是變數(自定義變數),兩個結構體之間直接賦值按道理應該也是可以的吧,將一個結構體對象賦值給另一個結構體對象的。

例:

#include"stdio.h"

structtest

inta;

intb;

intc;

char*d;

};

intmain()

structtestt1={1,2,3,"tangquan"};

structtestt2={0,0,0,""};

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

t2=t1;

printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);

return0;

Ⅲ C語言結構體變數值的意義是什麼

結構體類型與其他數據類型相同,其變數要通過數據類型定義,但結構體類型是一種自定義數據類型,其變數定義方式與其他數據類型有些許區別。結構體變數的定義方式主要有兩種,下面分別進行介紹。

1、先定義結構體類型,再定義結構體變數

先定義結構體類型,再定義結構體變數,這種結構體變數定義方式與其他數據類型相同,其語法格式如下:struct 結構體類型名 結構體變數名;

以上一節定義的struct Student結構體類型為例,定義該結構體變數的示例代碼如下:struct Student stu1,stu2;

上述代碼定義了2個結構體類型變數stu1和stu2,這時,stu1和stu2便具有了結構體特徵,編譯器會為它們分配一段內存空間用於存儲具體數據,具體如下圖所示。

.png

struct Student結構體變數stu1、stu2的存儲結構

需要注意的是,使用結構體類型定義變數時,struct關鍵字不可少,struct Student作為整體才表示一個結構體類型。缺少struct關鍵字,程序編譯不通過。錯誤示例代碼如下:Student stu1; //錯誤,缺少struct關鍵字

編譯器在編譯上述代碼時會報錯,提示未定義標識符「Student」。

2、 在定義結構體類型的同時定義結構體變數

定義結構體類型的同時定義結構體變數,其語法格式如下:struct 結構體類型名稱

{undefined

數據類型 成員名1;

數據類型 成員名2;



數據類型 成員名*n*;

}結構體變數名列表;

以定義struct Student結構體類型,並定義struct Student類型的變數stu1、stu2為例,具體示例如下:struct Student{undefined

int num; char name[10];

char sex;

}stu1,stu2;

上述代碼在定義結構體類型struct Student的同時定義了結構體變數stu1和stu2,該方式的作用與先定義結構體類型,再定義結構體變數作用相同,其中,stu1和stu2中所包含的成員類型都是一樣的。

Ⅳ c語言結構體變數怎麼使用

結構體變數簡稱為結構變數,它由結構類型定義,有三種定義方法。下面以定義結構類型 book 和結構變數mybook 、 storybook 為例說明之。
1. 先定義結構類型,再定義結構變數。
struct book /* 定義結構體類型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook, storybook;
用這種方法定義結構變數,是最常用的方法,但須注意不能省略關鍵字「 struct 」。還可以在定義結構變數的同時給它的成員賦初值。如:
struct book /* 定義結構體類型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook = { 「maths」, 24.7, 「 電子社 」, 「zhao」 }, storybook;
則, mybook 變數的 price = 24.7 。
2. 定義結構類型的同時定義結構變數。
struct book /* 定義結構體類型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct book mybook, storybook;
3. 不定義結構類型,直接定義結構變數。
struct /* 不定義結構類型名 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct book mybook, storybook;
需要說明的是,當某結構類型的成員又是另外一個結構類型時,稱嵌套定義,其定義方法如下:
struct brith_date
{
int month ;
int day ;
int year ;
} ;
struct
{
char name[10] ;
char address[30];
char tel[12];
int age;
struct data birthday;
char sex[3];
} student_01 , employee ;
此例直接定義了 student_01 和 employee 兩個變數,但是沒有定義此結構體的名字,因此不能再定義與student_01 和 employee 同類的其它結構變數了!如下行定義是錯誤的:
truct boy, girl;

Ⅳ C語言中結構體類型名與變數名區別

結構體名字是類型名,變數名是實體名,一個類型可以有許多實體。
具體操作,舉例講解如下:
1.結構體類型定義
定義方式1:
Typedef
struct
LNode
{
int
data;
//
數據域
struct
LNode
*next;
//
指針域
}
*LinkList;
定義方式2:
struct
LNode
{
int
data;
//
數據域
struct
LNode
*next;
//
指針域
};
Typedef
struct
LNode
*LinkList;
以上兩個定義方式是等價的,是將*LinkList定義為struct
LNode類型,即LinkList被定義為一個類型名。這樣就可以用LinkList來定義說明新的變數了,如:
LinkList
L;
即將L定義為struct
LNode類型的指針變數
2.結構體類型變數定義
定義方式1:
struct
LNode
{
int
data;
//
數據域
struct
LNode
*next;
//
指針域
}LnodeA;
定義方式2:
struct
LNode
{
int
data;
//
數據域
struct
LNode
*next;
//
指針域
};
struct
LNode
LnodeA;
以上兩個定義方式也是等價的,這樣就將LnodeA定義為一個truct
LNode類型的變數,即LnodeA為一個truct
LNode類型的變數名。

Ⅵ C語言中定義結構體類型變數的方法

1.結構體類型數據的定義方法和引用方法
定義結構體:struct
結構體名
{
成員列表
};
定義結構體類型的變數:有三種形式

定義類型時定義變數:struct
結構體類型名
{
成員列表
}變數名列表;

直接定義結構類型變數:struct
{
成員列表
}變數名列表;

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

熱點內容
svn連接伺服器地址 發布:2025-02-01 11:51:31 瀏覽:416
對源程序為什麼要編譯 發布:2025-02-01 11:47:46 瀏覽:218
sql表添加記錄 發布:2025-02-01 11:22:08 瀏覽:864
word編輯加密 發布:2025-02-01 11:18:53 瀏覽:571
php變數文本 發布:2025-02-01 11:10:46 瀏覽:426
音悅台上傳mv 發布:2025-02-01 11:05:02 瀏覽:516
微信如何設置訪問限制 發布:2025-02-01 10:43:06 瀏覽:335
b站緩存視頻下架還有嗎 發布:2025-02-01 10:37:52 瀏覽:940
e卡通初始密碼是多少 發布:2025-02-01 10:31:55 瀏覽:127
phppost上傳文件 發布:2025-02-01 10:26:42 瀏覽:105