struct的三種初始化方法
struct是C中重要的ADT。但是在一般講C的書中,往往只介紹了struct的定義、順序初始化及位域。本文將筆者曾經用到的、看到的知識點羅列出來,與大家分享。
為了方便後面的介紹,先定義一個struct型別:
struct User
{
int id; //id
char name[100]; //user name
char *home; //home directory
int passwd; //password
};
1 初始化
struct資料有3中初始化方法:順序,C風格及C++風格的亂序。
1)順序
這種方法很常見,在一般的介紹C的書中都有介紹。順序初始化的特點是: 按照成員定義的順序,從前到後逐個初始化;允許只初始化部分成員;在被初始化的成員之前,不能有未初始化的成員。
eg:
struct User oneUser = {10, "Lucy", "/home/Lucy"};
初始化之後,oneUser各個成員的值為:
oneUser.id = 10;
oneUser.name = "Lucy";
oneUser.home = "/home/Lucy";
oneUser.passwd = 0;
2)亂序(C風格)
順序的缺陷是必須按成員定義的順序逐個初始化,不能間隔。而亂序的方式則很好的解決了這個問題,因為這種方式是按照成員名進行。
eg:
struct User oneUser = {
.name = "Lucy",
.id = 10,
.home = "/home/Lucy"
};
3)亂序(C++風格)
C++風格的亂序初始化方式跟C風格的一樣,只是它更常用在C++程式碼裡。
eg:
struct User oneUser = {
name:"Lucy",
id:10,
home:"/home/Lucy"
};
不論是哪種方式,都允許只初始化部分成員;未被初始化的成員預設為0(指標型別的成員預設為NULL)。兩種亂序初始化方法,即可以用在C程式碼中,也可以用在C++程式碼中。
相關推薦
struct的三種初始化方法
struct是C中重要的ADT。但是在一般講C的書中,往往只介紹了struct的定義、順序初始化及位域。本文將筆者曾經用到的、看到的知識點羅列出來,與大家分享。 為了方便後面的介紹,先定義一個struct型別: struct User { int id;
Collection集合的三種初始化方法
(一) java容器可以分為兩大類 1)Collection其中包括List,Set,Queue 2)Map (二) Arrays.asList()方法:接受一個數組或一個逗號分隔的元素列表,並將其轉化為Lists物件 (三) 1:構造器方法,Colle
jQuery 三種初始化的方法
jquery 的三種初始化方法 第一種: $(document).ready(function(){ //do somethings }); 第二種
WebApplicationContext的三種初始化方式
實例 aware web.xml span available HA 而且 util onf ApplicationContext是Spring的核心,Context我們通常解釋為上下文環境,我想用“容器”來表述它更容易理解一些,ApplicationContext則
Java_53_陣列的三種初始化方式_陣列的界限(下標)
陣列初始化 1.靜態初始化 除了用new關鍵字來產生陣列以外,還可以直接定義陣列的同時就為陣列元素分配空間並賦值。 int[] a={1,2,3}; Man[] mans={new Man(1,1),new Man(2,2)} 2.動態初始化 陣列定義與為陣列元素分配空間
053_數組的三種初始化方式
style 枚舉 元素 區間 默認 int 同時 其中 class 一、默認初始化 數組也是引用類型中的其中一種、所以數組也是對象、數組中的元素相當於對象中的成員變量、其初始化規則和對象成員變量一致。 1.int或能自動轉為int類型的(byte、short、i
053_陣列的三種初始化方式
一、預設初始化 陣列也是引用型別中的其中一種、所以陣列也是物件、陣列中的元素相當於物件中的成員變數、其初始化規則和物件成員變數一致。 1.int或能自動轉為int型別的(byte、short、int)、long預設初始值都為:0 2.浮點數型別(單精度float和雙精度double)
陣列的三種初始化方式
1.靜態初始化 除了用new關鍵字來產生陣列以外,還可以直接在定義陣列的同時就為陣列元素分配空間並賦值。 &n
Spring容器中定義Bean幾種初始化方法和銷燬方法
Spring 容器中的 Bean 是有生命週期的,Spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前
Spring容器中的Bean幾種初始化方法和銷燬方法的先後順序
Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法;
java陣列的三種初始化方式
2018年4月3日Java語言中陣列必須先初始化,然後才可以使用。所謂初始化就是為陣列的陣列元素分配記憶體空間,併為每個陣列元素附初始值。注意:陣列完成初始化後,記憶體空間中針對該陣列的各個元素就有個一個預設值: 基本資料型別的整數型別(byte、sho
ArrayList的四種初始化方法
1.使用Arrays.asList方法 ArrayList<Type> obj = new ArrayList<Type>(Arrays.asList(Object o1, Object o2, Object o3, ....so on)); 舉個
[IOS 開發] UIImage類的物件兩種初始化方法的區別
1、imageNamed: 1 UIImage *image = [UIImage imageNamed:@"1"]; UIImage的類方法 第一次讀取圖片的時候,先把這個圖片放到快取中,下次再使用這個名字的圖片時,直接從快取中讀取;如果快取中不存在這個名字的影象
Spring管理的bean初始化方法的三種方式,以及@PostConstruct不起作用的原因
1:Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作
Mat 的幾種初始化和賦值方法
cto 轉換 -m mat tro sha 數據 return main 這幾天用到了由cv::Point3f和std::vector<float>到cv::Mat數據類型的轉換。本質上就是換一下容器。今晚做個小總結。 由Point3f 到 Mat 有兩種方法,
Python視覺化中Matplotlib(4.三種設定樣式方法、設定座標刻度以及標籤、設定顯示出特殊字元)
1.三種設定方式 (1)向方法傳入關鍵字引數 上一節已經總結過,一直在使用 (2)對例項使用一系列的setter方法 具體的方法直接看程式碼 import matplotli
Spring 學習筆記1--三種例項化Bean方法、註解
首先通過一個簡單的程式學習Spring在程式中的運用。 定義一個介面: package com.spring.interfacebean; public interface PersonBean { void show(); } 這個介面的實現類:
spring在web容器啟動時執行初始化方法(四種方式)
需求:在tomcat啟動時開啟一個定時任務,或初始化slor索引 想法:容器啟動時執行方法,最容易想到的就是servlet中可以配置load-on-startup,設定一個正整數也就可以隨容器一起啟動。 問題:上面的方法很好,但是由於定時任務需要去操作資料庫,而專案
卷積神經網路(三):權值初始化方法之Xavier與MSRA
基礎知識 首先介紹一下Xavier等初始化方法比直接用高斯分佈進行初始化W的優勢所在: 一般的神經網路在前向傳播時神經元輸出值的方差會不斷增大,而使用Xavier等方法理論上可以保證每層神經元輸入輸出方差一致。 這裡先介紹一個方差相乘的公式,以便理解Xav
比較Spring中三種例項化Bean的方法
1 使用構造器例項化 <!-- 呼叫預設構造器實現 可以使用scope="prototype"指定是否使用單例模式 --> <bean id="personService" cl