本文目錄一覽:
求助一個C語言結構體數組賦初值的問題
typedef struct _test {
int id;
char name[20];
int level;
int stock;
double price;
int d;
} Test;
對結構體賦值,一般是順序賦值,或者指定賦值
比如
Test test[] = {
{1, “abc”, 1, 2, 1.2, 3},//對應id, name, level, stock, price, d
{.id = 2, .level=3, price=4.2, .stock=2},//這個就是指定賦值,點後面接的是結構體成員名
};
C語言結構體怎麼賦值?怎麼初始化?給個最簡單的例子~
strcut a
{
int m;
int n;
}
strcut a b,c;
直接賦值 b=c;
通過 . 賦值 b.m=1 ; b.n=2;
聲明時賦值 strcut a b={1,2};
c語言結構體初始化賦值
初始化的時候stu1前面少了struct student(表示結構體類型),加上之後這樣初始化就行了。
就相對整型初始化時,必須int x=。。。。,不能直接x=。。。。,事實上就是語法上的一個小細節錯誤。
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}};
====
[原創回答團]
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159083.html