c語言struct的賦值
❶ 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等)供用戶使用。但是由於程序需要處理的問題往往比較復雜,而且呈多樣化,已有的數據類型顯得不能滿足使用要求。