❶ c語言結構體里的結構體怎麼初始化
方法是在定義變數的同時給其一初始值。結構體變數的初始化,遵循相同的規律。
簡單變數的初始化形式如下:
數據類型 變數名=初始化值;
例如,定義整型變數a,並給其初始化值10的語句如下
int a=10;
數組的初始化,需要通過一常量數據列表,對其數組元素分別進行初始化,形式如下:
數據類型 數組名稱〔數組長度〕={初始化值1,初始化值2,…, 初始化值n};
例如,定義長度為5的整型數組,並對其初始化的語句如下:
int A[5]={20,21,0,3,4};
結構體變數的初始化方式與數組類似,分別給結構體的成員變數以初始值,而結構體成員變數的初始化遵循簡單變數或數組的初始化方法。具體的形式如下:
struct 結構體標識符
{
成員變數列表;
…
};
struct結構體標識符 變數名={初始化值1,初始化值2,…, 初始化值n };
例如,定義struct Point類型變數,並初始化的語句如下:
struct Point oP1={0.0,0.2,0.3};
struct Point類型變數oP1的三個成員變數的值分別為
oP1.x=0.0,
oP1.y=0.2
oP1.z=0.3
由於定義結構體變數有三種方法,因此初始化結構體變數的方法對應有三種,上面已經介紹了其中的一種形式,其他兩種形式如下:
struct Point
{
double x;
double y;
double z;
} oP1={0.0,0.2,0.3}; struct
{
double x;
double y;
double z;
} oP1={0.0,0.2,0.3};
在初始化結構體變數時候,既可以初始化其全部成員變數,也可以僅僅對其中部分的成員變數進行初始化。例如:
struct Student
{
long id;
char name[20];
char sex;
}a= {0};
其相當於a.id=0;a.name=「」;a.sex=『\0x0』。
僅僅對其中部分的成員變數進行初始化,要求初始化的數據至少有一個,其他沒有初始化的成員變數由系統完成初始化,為其提供預設的初始化值。
❷ c語言怎麼結構數據初始化
C語言結構體類型變數初始化分為 普通變數 和 數組變數 兩種形式,說明如下:
typedefstruct
{
intx,y;
}direction;
directiondir={1,2};//普通變數,用一組{}括起來,成員變數數據間以逗號分隔,按變數定義順序對應數值。未賦值成員,默認填0
directionmove[8]={//數組變數,整體用一組{}括起來,每一個元素按普通變數格式進行書寫,各元素間用逗號分隔。未賦值元素,默認填0
{0,0},{0,1},{1,0},{1,1},
{2,0},{2,1},{3,0},{3,1}
};
❸ C語言結構體指針變數初始化
void
RegList(LB
*L)
//初始化線性表(建立頭結點,指針域置為空)
{
L=(LB
*)malloc(sizeof(LB));
L->next=NULL;
}
改成指針的指針
調用的時候RegList(&k);就行了。
void
RegList(LB
**L)
{
*L
=
(LB*)malloc(sizeof(LB));
(*L)->next
=
NULL;
}
❹ c語言如何對結構體某一成員初始化
結構體與類一樣可以定義一個構造函數。
如下:
struct s{
s(){
a=0;
}
int a;
};
每次聲明一個結構體變數時都會調用結構體的構造函數,在構造函數裡面添加初始化語句就可以了
❺ c語言,結構變數初始化
#include<stdio.h>
#include<string.h>
structstudent
{
charname[10];
intage;
structstudent*next;
};
voidmain()
{
structstudent*header,*p;
structstudentc={"qianfeng3",20,NULL};//只有在定義結構體變數時,才能進行數據初始化賦值,且abc三個的順序要這樣寫,因為有&c&b的變數取地址操作,所以,要先有定義,才能使用變數
structstudentb={"qianfeng2",19,&c};
structstudenta={"qianfeng1",18,&b};
p=&a;
while(p)
{
printf("%s,%d ",p->name,p->age);
p=p->next;
}
}
❻ c語言,結構體數組怎麼初始化
對於數組元素很多的初始化可以使用初始化列表方法。在c語言中用於進行初始化的程序結構則稱為初始化器或初始化列表。
1、初始化器
初始化器是聲明器的可選部分,它由一個'='以及其後的一個表達式(或含有多個以','隔開的帶圓括弧表達式的單一列表)所組成。後面這一列表有時也被稱為「初始化(器)列表」(initializer list)或」初始化列表」(initialization list)。
例:
public class Curry
{public string MainIngredient { get; set; }
public string Style { get; set; }
public int Spiciness { get; set; }}
2、初始化列表
一個類/結構的構造函數可以在定義中於構造函數體前包含一個初始化列表,用以給類/結構的元素賦初值。
例:
class foo
{public:
foo(string s, int i):name(s), id(i){} ; // 初始化列表
private:
string name ;int id ;};
(6)c語言結構體變數初始化擴展閱讀
在程序里,數據初始化也可能在沒有由明確的語法來實現的情況下進行。例如說,如果一個靜態變數在沒有初始化(即未指定初值)的情況下被聲明,則:對於原生數據類型:以對應類型的零值進行初始化;對於類中的靜態對象:由其默認的構造函數來進行初始化。
每一個初始化部分裡面的代碼在程序運行後,或庫的begin-end塊運行之前。delphi使用對單元相關樹的深度優先遍歷來運行初始化部分。換句話說,就只在一個單元的初始化代碼運行前,delphi就運行了特他使用的每一個單元的初始化部分。每一個單元僅初始化一次 。
❼ c語言全局結構體變數定義初始化
我覺得是你用的編譯器不太嚴格,或者非常智能
如果是
extern stNum a;
stNum a = {1, 2};
還容易理解一點
❽ 數據結構中結構體變數為什麼要初始化為什麼之前講c語言的時候結構體變數不初始化
結構體變數如果是局部變數,需要初始化,否則初值是隨機的。 新型數據結構,可以用初始化函數來實現初始化。
之前C語言應該也是一樣。取決於結構體變數的使用位置,局部的應該初始化。
❾ C語言 用函數初始化結構變數
或者通過參數傳進去,如
void Init(stu_handlertus *hdl)
{
hdl->count = 1;
for(i = 0; i < 50; ++i)
{
hdl->rtus[i].rtuindex = 0
hdl->rtus[i].a = 0;
hdl->rtus[i].b = 0;
hdl->rtus[i].c = 0;
}
}
調用
Init(& handlertus);
即可。
不過結構:
struct stu_handlertus
{
int count;
struct stu_handlertus rtus[50];
}handlertus;
是錯誤的,原因是這一句
struct stu_handlertus rtus[50];
這樣就不知道結構stu_handlertus的大小了。所以上面改為
struct stu_handlertu rtus[50];
兩個結構名字這么接近,是一個不好的風格。
❿ c語言結構體初始化
你已經定義了一個mem1,下一句又定義了一個mem1,所以它會提示你多次定義了,應該把第二個struct Mem去掉吧