當前位置:首頁 » 編程語言 » c語言結構體直接賦值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言結構體直接賦值

發布時間: 2022-08-31 19:17:45

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;

}

(1)c語言結構體直接賦值擴展閱讀

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

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

㈢ C語言用字元串直接給結構體賦值方法

你這個明顯有問題 你怎麼吧字元數組復制給了結構體 memcpy(&stime,buf,8); 這個有問題
struct sTime

{
char year[4];

char month[2];

char day[2];

};
int main()
{
struct sTime stime= {"2013", "05", "25"};
printf("year: %s\n",stime.year);
printf("month: %s\n",stime.month);
printf("day: %s\n",stime.day);
}

㈣ 結構體什麼時候可以直接賦值C

在聲明的時候和後續賦值略有不同,在C語言中是兩種處理方法。
如果有結構體
struct test
{
int a;
char c;
int b;
};
定義的時候,可以
struct test var = {1,'c', 2};
這樣初始化,結果為var.a = 1, var.c = 'c', var.b = 2;
但是如果後續賦值
var = {1,'c', 2};
就會報錯。因為在C語言中不支持這種形式的操作。
不過可以取巧轉換一下,改成
var = (struct test){1,'c', 2};
這樣就可以了。 在這種情況下,系統會申請一個臨時變數,並初始化為該值,再對var進行賦值。而同類型結構體之間賦值操作是C語言規則允許的。

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

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

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

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

(5)c語言結構體直接賦值擴展閱讀:

結構體的相關操作規則:

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

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

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

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

㈥ C語言結構體數組的定義和賦值

C99標准出來以前,C語言不支持動態定義數組大小,只能採用動態分配指針方式來完成動態數組的個數定義。如:
struct
st
{
int
x,y;
char
str[10];
};
struct
st
*array
;
int
n;
printf("input
n:
");
scanf("%d",
&n);
array=(struct
st*)malloc(n*sizeof(struct
st));
//動態分配n個結構體空間,接下來array的操作,與數組操作是相同的,如:array[0].x=1
;
C99以後,C語言標准開始支持動態定義數組,但動態數組,在其確定個數之後,在其生命期中,就不可變了。如:
struct
st
{
int
x,y;
char
str[10];
};
int
n;
printf("input
n:
");
scanf("%d",
&n);
struct
st
array[n]
;
//定義動態數組
array[0].x=1
;

㈦ C語言結構體賦值

首先這樣編譯會出錯。
struct
{
char ch;
int pri;
}
定義結構體類型,後面沒有跟分號,說明後面是該類型的變數列表,之後遇到Pri接下來的空格後面跟的lpri編譯器就不知道要干什麼了。
如果用struct
{
char ch;
int pri;
};,還是出錯,因為之後的Pri沒有聲明或定義。
如果用struct Pri
{
char ch;
int pri;
};,純C的話不行,Pri是結構體名而不是類型名,會編譯出錯。C++下會把Pri當作struct Pri,不會出錯。
可以這么寫:
typedef struct
{
char ch;
int pri;
}Pri;
Pri lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}};
Pri rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
最後兩行也可以這樣寫:
Pri lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},
rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
注意倒數第二行是分號還是逗號會影響初始化列表的語義。
(順便,這個不是賦值。)
話說回來,一開始的寫法去掉Pri是正確的(只是定義之後無法訪問該類型,一般不推薦):
struct
{
char ch;
int pri;
}
lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},
rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
====
[原創回答團]

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

}

(8)c語言結構體直接賦值擴展閱讀

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;

}