1. 程式人生 > >linux C 結構體struct的定義和初始化

linux C 結構體struct的定義和初始化

struct 定義:

struct test
{
int a;
long b;
float c;
char d;
char e[];
}tt1,tt2;//物件宣告列表緊跟struct定義
struct test tt3,tt4;//單獨宣告物件列表

//宣告一個沒結構體名字的結構體
struct
{
int a;
long b;
float c;
char d;
char e[];
}tt1,tt2;

struct初始化:
1,//按順序初始化
struct test ={1,2,1.23,'h',"gsdhf"};
2,//亂序
struct test=
{
.a=1,
.b=2,
.c=1.23,
.d='h',
.e="gsdhf"
};
注意:
1,如果存在部分成員沒初始化,一般值是系統預設值。
2,如果即存在亂序又存在順序初始化,順序初始化始終緊跟上一個亂序成員,即該順序賦值給上一個亂序成員的下一個成員。如:
    struct test tt=   
    {   
        .c = 18.90,                    
        .b= 2,                    
        0.25  
    };    

0.25的值將付給成員b後的那個成員c,即之前給c賦值18.90將被0.25取代。

當然如果順序賦值前無亂序賦值,則按struct定義成員的順序進行賦值,後面的亂序賦值則覆蓋前面的順序賦值。


自定義struct 型別
typedef struct test
{
int a;
long b;
float c;
char d;
char e[];
};
test tt;//test現在是自定義資料型別了,和int,char等資料型別的使用是一樣的
tt=
{
.a=1,
.b=2,
.c=1.23,
.d='h',
.e="gsdhf"

};

注意:也可先定義struct test,然後使用語句typedef struct test tt;或者typedef struct test;test tt;來自定義struct資料型別並宣告物件。

相關推薦

linux C 結構struct定義初始

struct 定義: struct test { int a; long b; float c; char d; char e[]; }tt1,tt2;//物件宣告列表緊跟struct定義 struct test tt3,tt4;//單獨宣告物件列表 //宣告一個沒結構體名

淺析C++中結構定義初始引用

#include<iostream>using namespace std; struct Date{        //宣告一個結構體型別Date   int month;      //日期中的月份   int day;        //日期中的天   int year;       //日

5. C 結構 陣列的指標 初始 與 記憶體釋放

結構體如下: struct student{ Int num; Char* name; } Tom,*Lily; 1.如果定義成Tom的形式,不需要為結構體分配記憶體,但是需要對name

c++中成員函數指針數組定義初始方法

fun all turn bsp ati const 成員函數指針 溢出 cat 實際項目中經常遇到很多類似操作,比如命令碼對應執行函數等,對於此類操作,比較好的方式是使用const數組,將命令碼和操作函數綁定在一起,通過查表方式找到操作函數,並執行操作函數。這樣可以簡化代

定義結構變量及初始

style 不想 占用空間 clas 個學生 truct 學生 釋放 ring   雖然已經了解結構體類型,但是結構體類型變量的定義只有一種方法麽,這個當然不是的,所以我把我所知道的幾種方法列出來供給大家參考一下;   首先是第一種,也是我們經常用的一種: 1 #inc

C++ 結構定義

ppr lse ref 結構體 c++ pro 方式 其它 AS struct 結構體名稱{ ???數據類型 A; ???數據類型 B; }結構體變量名; 相當於: struct 結構體名稱{ ???數據類型 A; ???數據類型 B; }; struct 結構體名稱 結構

C++Primer——《第九章1 》“ 順序容器概述、容器定義初始

目錄 順序容器概述 確定使用哪種順序容器 容器操作 迭代器範圍 迭代器的特性 迭代器的型別 類型別名 begin 和 end 成員 容器定義和初始化 將一個容器初始化為另一個容器的拷貝 列表初始化 (C++11) 與順序容器相關的建構函式 標準

各種C#陣列的定義初始

陣列是具有相同資料型別的項的有序集合。要訪問陣列中的某個項,需要同時使用陣列名稱及該項與陣列起點之間的偏移量。在 C# 中,宣告和使用C#陣列的方法與 Java 有一些重要區別。 一維陣列 一維陣列以線性方式儲存固定數目的項,只需一個索引值即可標識任意一個項。在 C#

C語言中宣告、定義初始的區別

函式和變數(全域性變數)都有宣告和定義, 對於函式而言: 同一檔案內,如果函式fun_1呼叫fun_2時,如果fun_2在fun_1之後定義,則需在fun_1之前對fun_2進行宣告,如下: void fun_2();// 宣告 void fun_1() { ... fu

C++】 string學習筆記1——定義初始string物件

string學習筆記1 c++初始化string物件的方式有以下幾種常見的方式。 /**定義和初始化string**/ string s1; ///預設的初始化,s1為一個空字串。 string s2 = s1;

C 結構 struct 詳解

陣列(Array),它是一組具有相同型別的資料的集合。但在實際的程式設計過程中,我們往往還需要一組型別不同的資料,例如對於學生資訊登記表,姓名為字串,學號為整數,年齡為整數,所在的學習小組為字元,成績為小數,因為資料型別不同,顯然不能用一個數組來存放。在C語言中,可以使用結

關於結構定義宣告的幾種方式

結構體型別變數的定義與其它型別的變數的定義是一樣的,但由於結構體型別需要針對問題事先自行定義,所以結構體型別變數的定義形式就增加了靈活性,共計有三種形式,分別介紹如下:1) 先定義結構體型別,再定義結構體型別變數:struct stu / *定義學生結構體型別* / {  

[C++ primer學習筆記] 3.2.1 定義初始string物件

類可以定義多種初始化物件的方式:或初始值的數量不同; 或初始值的型別不同。初始化的不同方式:拷貝初始化:使用等號(=)初始化變數,實際上執行的是拷貝初始化,編譯器把等號右側的初始值拷貝到新建立的物件中去直接初始化:不使用等號,則執行的是直接初始化當初始值只有一個時,使用直接/

C/C++結構struct詳解

結構體定義 typedefstruct 用法詳解和用法小結 typedef是型別定義的意思。typedef struct 是為了使用這個結構體方便。 具體區別在於: 若struct node{}這

C語言結構宣告中冒號的使用(佔位符) & C結構的亂序初始

有些資訊在儲存時,並不需要佔用一個完整的位元組, 而只需佔幾個或一個二進位制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省儲存空間,並使處理簡便,C語言又提供了一種資料結構,稱為“位域”或“位段”。所謂“位域”是把一個位元組中的二進位劃分為

結構定義使用位段的使用

結構體(struct),也叫結構,是由一系列具有相同型別或不同型別的資料構成的資料集合。 比如:描述一個學生,可能需要描述他的學號,姓名,成績等。 一. 宣告及定義結構體變數 有三種方法定義結構體變數 1. 先宣告結構體型別,再定義該型別的變數,例如: stru

libevent原始碼分析(2)--2.1.8--結構 struct eventstruct event_callback

一、event_callback結構體 struct event_callback { //下一個回撥事件 TAILQ_ENTRY(event_callback) evcb_active_next; //回撥事件的狀態標識,具體為:

C語言--一堆陣列的定義初始

 陣列:            1.定義陣列:                        #include <stdio.h>                        int main()                {       //這個只表示有十

linux通過結構struct resource描述一個具體的硬體

linux對掛接在4G匯流排空間上的裝置實體的管理方式 -- struct resource/usr/src/linux-2.6.21.5/include/linux/ioport.hstruct re

Java一維陣列定義初始、二維陣列定義初始、傳參方式、Arrays類

陣列 陣列是Java中的一種資料型別,是一組資料的集合,陣列中的每個成員稱為元素。Java中的陣列是類型別(引用型別),Java的同一個陣列中,只能存放相同型別的資料元素。 一維陣列 一維陣列的定義方式 一維陣列有以下兩種定義方式,推薦使用第一種定義方式 <資料型別