當前位置:首頁 » 編程語言 » c語言struct的賦值

c語言struct的賦值

發布時間: 2022-10-06 03:04:03

c語言 結構體的賦值

這叫結構體變數聲明與初始化。
按規定,花括弧內的 初始化 數值,必須為常量。
struct student a[3]={zhangsan,{。。。。}; //錯在初始化用了 非常量
你的結構數組a[3] 里用了變數 zhangsan, 語法上是錯的。
你可以改成:
struct student a[3]={ {0}, {1002, 後面照抄。。。。。};
其中 {0} 是給數組元素 a[0] 初始化,充0 佔位。
聲明完畢,語句部分 另加一句賦值語句: a[0]=zhangsan; 就把zhangsan的數據傳給a數組的 元素 a[0] 了。

❷ C語言struct對char數組賦值問題

錯誤的原因同:
char a[20];
a[20]="djfidj" //這里使用了不存在的 數組元素a[20]

a.name[20]="Hellow"; 也是同理 不存在 a.name[20],
最後一個數組元素是a.name[19]

要記得 定義和引用是不一樣的哦
可以用scanf("%s",a.name);

❸ C語言,結構體中的數組怎麼賦值,

intmain(void){

structstudentsbao={};

printf("%d,%s ",bao.id,bao.name);//輸出是4224528,空(應該是null)

//structstudentsbao={3,"123"};可以。第一種賦值方法

//strcpy(bao.name,"bao");//可以,

//printf("%d,%s ",bao.id,bao.name);

//bao.name="bao";錯誤「stray'351'inprogram」其他是亂碼,

//bao.name[0]='a';

//bao.name[0]='/0';

//printf("%d,%s ",bao.id,bao.name);

/*這樣可以,*/

//chararr[10]="baobao";

////bao.name=arr;//error""

//scanf("%s",bao.name);//可以,

//printf("%d,%s ",bao.id,bao.name);

//所以scanf那一類函數都可以。

//還有就是memcpy函數也是可以的

return0;

}

(3)c語言struct的賦值擴展閱讀

C語言結構體數組的直接賦值及數組的長度計算:

#include<stdio.h>

//自定義一個字元串的結構體,包含字元串和字元串長度兩個變數

typedefstructStr{

charch[100];

intlength;//char數組(字元串)的長度

}myStr;

//剛開始聲明變數時每個變數的字元串長度length都為0

//這里以長度為10的數組為例,數組長度是1000

//對第0個到第9個結構體數組的長度同時賦值為0

myStrmyStr1[10]={

[0...9]={

.length=0,

}

};

intmain(){

inti;

for(i=0;i<10;i++){

printf("%d ",myStr1[i].length);

}

return0;

}

❹ C語言 如何在結構體中給嵌套的結構體賦值

結構體嵌套,賦初值,大括弧嵌套就可以了。
問題是你代碼寫錯了。
你定義的old1不是結構類型,而是結構變數。
在shuju中成員要寫struct old 變數名;
不能寫struct old1。
下面是演示代碼:(補充:如果想定義一個結構類型別名,要用typedef

#include <stdio.h>

struct old

{

int year;

int month;

int day;

}old1={1972, 8, 3};

struct shuju

{

char name[10];

char gender[6];

int height;

struct old old1;

char access[9];

}shuju1={"moumouren","male",175,{2019,6,29},"well"};

int main()

{

printf("結構變數old1的初值: %d %d %d ",old1.year,old1.month,old1.day);

printf("結構變數shuju1中成員old1的初值:%d %d %d ",shuju1.old1.year,shuju1.old1.month,shuju1.old1.day);

printf("我特意起一樣的名字,就是告訴你這兩個變數是不一樣的。 ");

return 0;

}

/*(補充:如果想定義一個結構類型別名,要用

typedef struct old

{

int year;

int month;

int day;

}old1;//這樣old1才表示是一個類型,然後再定義該類型變數時,才可以寫 old1 變數名;

)*/

❺ c語言結構體能否整體賦值

可以的,但需要保證是具有相同結構的結構體變數。

可以將一個結構體變數的值賦給另一個具有相同結構的結構體變數。如student1和student2都是student類型的變數,可以這樣賦值:student1= student2;

假設申明了兩個成員列表完全一樣的兩個結構體,編譯器會當作兩個完全不同的類型,即使他們的成員列表是一樣的,令兩個結構體的變數間賦值,則是非法的。

(5)c語言struct的賦值擴展閱讀:

結構體的相關操作規則:

1、可以引用一個結構體變數中的一個成員的值:

例如, student1.num表示結構體變數student1中的成員的值,student1.num的值為10001。引用結構體變數中成員的一般方式為:結構體變數名.成員名。例如可以這樣對變數的成員賦值:student1.num=10010;

2、不能將一個結構體變數作為一個整體進行輸入和輸出:

例如,已定義student1和student2為結構體變數,並且它們已有值。不能企圖這樣輸出結構體變數中的各成員的值:cin>>student1; 只能對結構體變數中的各個成員分別進行輸入和輸出。

❻ 結構體賦值是多少

C語言中的結構體變數可以用另一個變數對其進行賦值或初始化。

簡單結構體(不包含指針成員)直接賦值沒有問題。但是稍微復雜一點的結構體裡面會有指針成員,那麼以上的淺拷貝則會有問題。

賦值會直接將結構體的指針變數被賦值,賦值之前其所指向的內存單元丟失,賦值之後若該指針指向的內存單元被其它指針釋放掉,那麼繼續使用該成員指針的話則有可能導致內存泄漏。

概述:

在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。

結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問

C++提供了許多種基本的數據類型(如int、float、double、char等)供用戶使用。但是由於程序需要處理的問題往往比較復雜,而且呈多樣化,已有的數據類型顯得不能滿足使用要求。

熱點內容
獲取文件夾文件名 發布:2024-04-19 14:45:51 瀏覽:247
嗶咔本地緩存怎麼看 發布:2024-04-19 14:36:00 瀏覽:105
linux的alarm 發布:2024-04-19 14:26:22 瀏覽:333
松江麻將源碼 發布:2024-04-19 14:06:06 瀏覽:958
明日之後怎麼實名認證安卓 發布:2024-04-19 13:35:55 瀏覽:936
數據加密解密演算法 發布:2024-04-19 13:25:52 瀏覽:945
安卓平板存儲空間不知道用在哪裡 發布:2024-04-19 12:58:57 瀏覽:765
出售lol腳本防封判幾年 發布:2024-04-19 12:45:14 瀏覽:188
安卓電視會員和平板哪個好 發布:2024-04-19 12:42:48 瀏覽:835
雲伺服器2m寬是多少 發布:2024-04-19 11:56:36 瀏覽:728