c語言結構初始化
『壹』 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語言結構體構造函數初始化的問題
#include<iostream>
#include<string>
using std::cout;
using std::string;
class A{
string a;
public:
A(string ab="1wggg"){a=ab;}
string geta(){return a;}
};
void main()
{
A b;
cout<<b.geta();
}
『叄』 c語言如何對結構體某一成員初始化
結構體與類一樣可以定義一個構造函數。
如下:
struct s{
s(){
a=0;
}
int a;
};
每次聲明一個結構體變數時都會調用結構體的構造函數,在構造函數裡面添加初始化語句就可以了
『肆』 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 ;};
(4)c語言結構初始化擴展閱讀
在程序里,數據初始化也可能在沒有由明確的語法來實現的情況下進行。例如說,如果一個靜態變數在沒有初始化(即未指定初值)的情況下被聲明,則:對於原生數據類型:以對應類型的零值進行初始化;對於類中的靜態對象:由其默認的構造函數來進行初始化。
每一個初始化部分裡面的代碼在程序運行後,或庫的begin-end塊運行之前。delphi使用對單元相關樹的深度優先遍歷來運行初始化部分。換句話說,就只在一個單元的初始化代碼運行前,delphi就運行了特他使用的每一個單元的初始化部分。每一個單元僅初始化一次 。
『伍』 C語言(數據結構)順序表的初始化
肯定是要分配空間的,你第一個程序的initsqlist函數中聲明的結構體指針(Sqlist *a;),而第二個程序的initsqlist函數中是聲明的結構體(Sqlist a;),前者只是在計算機內存中聲明一個指針,而不會給這個指針分配內存空間,所以你初始化的時候要給這個指針用malloc函數分配空間,而後者是實實在在的定義了一個結構體,在內存在不僅僅是一個地址,還分配了空間,就像你定義了一個數組一樣,已經在內存存在空間了,不需要再分配了。
總體來說就是你定義的是指針的話就要分配空間。
你的2個程序都是對的,但是一般用第一種定義鏈表!!!
『陸』 c語言結構體初始化
這個結構體中包含三個變數,num name[20] c
你的結構體初始化只初始化了 name[20]
其餘倆枝散個變數沒有初始化,所以會報錯
你可以這樣初始化 struct wo b(1,"jack",'M');
要注拆搭遲意對旅李結構體中所有變數都要初始化,除非這個變數有預設值
『柒』 C語言(數據結構)順序表的初始化
C語言(數據結構)順序表的初始化需要申請結點舉悄稿空間。
初始化順序表
1、/**
2、 * 初始化順序表
3、 * 返回1 表示初始化成功
4、* 返回0 表示初始化失敗
5、*/
6、int initList_sq(SqList &L) { //只有在C++中才會有引用的存在
7、 L.elem = (SeqType *) malloc(sizeof(SeqType) * LIST_INIT_SIZE);
8、 if (!L.elem)
9、 return 0; //內存分配失敗,存儲空間不夠
10、 L.length = 0; //表示順序表為空
11、 L.listsize = LIST_INIT_SIZE; //表示順序表裡,最大存儲單元個數
分配順序正孝表的存儲單元,初始化順序表屬性的值。運指
定義結構
typedef int SeqType; //存儲單元類型
typedef struct{
SeqType *elem; //存儲空間基地址
int length; //當前長度
int listsize; //當前分配的存儲容量(以sizeof(ElemType)為單位)
} SqList;
結構體內,有三個元素:存儲空間基地址,類似於數組首地址;當前長度,記錄順序表中有效存儲單元個數;當前分配的存儲容量,順序表中,最多容納的存儲單元個數。當順序表中所有存儲單元已經被使用,在下次插入元素之前,需要新增存儲單元。這點是數組所不具有的特性。
*註:定義一個存儲單元類型SeqType是為了使順序表適和更多數據類型,使用的時候修改SeqType類型即可。
『捌』 c語言結構體初始化(編譯系統vs2010)
.location 這種叫按名稱初始化,是gun對c的擴展,只有gnu支持,就是linux下的編譯器支持(gcc, g++)
程序員寫代碼的時候,最好使用被廣泛支持的標准,盡量不要使用個別編譯器的私有定義。
關注優酷上的 」C學習指南「,在第10章里會講這個問題。
『玖』 c語言結構體初始化!
#include<stdio.h>
#include<string.h>
int main()
{
struct teacher
{
int num;
char name[20];
char sex;
int zonghe;
}sun,wei;
strcpy(sun.name ,"sunxinsheng");
sun.num =10;
sun.sex ='n';
sun.zonghe =20;
printf("sun laoshi de xin xi: %d,%s,%c,%d ",sun.num ,sun.name,sun.sex ,sun.zonghe );
printf("請輸入另一個記錄! ");
scanf("橘高%d,%s,%c,%d",&wei.num,wei.name ,&wei.sex,wei.zonghe );/*你把鎮搜wei.zonghe改御伍歷成&wei.zonghe試試*/
printf("swei laoshi de xin xi: %d,%s,%c,%d ",wei.num ,wei.name,wei.sex ,wei.zonghe );
}
『拾』 c語言結構體初始化
你已經定義了一個mem1,下一句又定義了一個mem1,所以它會提示你多次定義了,應該把第二個struct Mem去掉吧