當前位置:首頁 » 編程語言 » 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語言中.結構體變數之間可以相互賦值嗎

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

熱點內容
查看加密空間說說 發布:2024-11-23 12:37:47 瀏覽:1
安卓手機在哪裡退款 發布:2024-11-23 12:36:53 瀏覽:964
ftp多少w 發布:2024-11-23 12:33:21 瀏覽:309
linuxsvn重啟服務 發布:2024-11-23 12:31:24 瀏覽:557
西軟伺服器地址 發布:2024-11-23 12:27:20 瀏覽:7
二進制java 發布:2024-11-23 12:25:01 瀏覽:498
和包在京東支付密碼是什麼 發布:2024-11-23 12:24:52 瀏覽:48
風光腳本 發布:2024-11-23 12:24:09 瀏覽:118
編譯局年鑒怎麼寫 發布:2024-11-23 12:23:59 瀏覽:977
linux解壓tar命令 發布:2024-11-23 12:21:02 瀏覽:656