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

c語言中的結構變數

發布時間: 2024-11-23 08:59:17

① 請問c語言中結構名和結構變數是什麼

結構可以看成是特殊的數組。
結構名等同數組名。結構變數等同 數組名。-- 通俗易懂吧!
數組 含一組數,它們是同一類型的。整型數組,它的所有元素都是整型。float 數組,它的所有元素都是float型.
結構 含一組數,它們往往 是 不同類型的。 例如,它的成員 有整型,有float型,有 char 型。
有沒有結構變數,就同有沒有數組變數一樣。
你不想用一堆簡單變數,而改用數組,就用數組了。同樣,你不想用一堆各種類型的簡單變數,你就改用結構了。
例如,學生信息:姓名,學號,數學成績,語文成績,物理成績,平均分數,你想把1個學生的這些信息作為一組數,放在一個變數里。你就可以定義一個結構類型,例如喊它struct student. 成員變數名叫 name,num,math,yuwen,wuli,mean.
寫出:
struct student{char name[20];int num;float math,yuwen,wuli,mean;} -- 這就是結構。
struct student st1,st2,st3,st4; -- 聲明了4個學生的學生信息結構變數,變數名 st1,st2,st3,st4
接下來就可以使用它們了。
至於如何用,自己看書吧。這里只能扼要回答基本問題。

② 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語言中。結構體變數之間可以相互賦值嗎

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

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);

(3)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語言中.結構體變數之間可以相互賦值嗎

結構體變數直接賦值,就是其本身內存地址空間,按照地址分布直接賦值。
所以兩個一樣的結構變數可以直接賦值。
但是如果結構成員中有指針,且指針指向的地址大小不一樣,是不能直接賦值的。

熱點內容
圖像檢索演算法 發布:2025-01-10 21:43:58 瀏覽:555
plsqlforupdate 發布:2025-01-10 21:43:50 瀏覽:913
如何設置健康碼快捷方式vivo安卓 發布:2025-01-10 21:39:52 瀏覽:500
安卓不兼容怎麼解決 發布:2025-01-10 21:37:02 瀏覽:29
linux字體大小 發布:2025-01-10 21:36:21 瀏覽:492
安卓手機的音量在哪裡調 發布:2025-01-10 21:32:11 瀏覽:613
路由器怎麼設置登錄密碼怎麼設置密碼 發布:2025-01-10 21:11:12 瀏覽:893
營運車解壓 發布:2025-01-10 21:11:01 瀏覽:932
安卓是哪裡出產 發布:2025-01-10 21:10:23 瀏覽:953
本科來了安卓版叫什麼 發布:2025-01-10 21:08:43 瀏覽:649