typedef關鍵字與結構體、結構體指標的定義
一、使用typedef定義結構體
typedef用來定義新的資料型別,通常typedef與結構體的定義配合使用。使用typedef的目的使結構體的表達更加簡練(所以說typedef語句並不是必須使用的)。
定義一個名字為TreeNode的結構體型別(現在並沒有定義結構體變數,並不佔用記憶體空間):
struct TreeNode
{
int Element;
struct TreeNode* LeftChild;
struct TreeNode* RightChild;
};
為結構體起一個別名Node,這時Node就等價於struct TreeNode
typedef struct TreeNode Node;
將結構體的定義和typedef語句可以連在一起寫:
typedef struct TreeNode
{
int Element;
struct TreeNode* LeftChild;
struct TreeNode* RightChild;
}Node;
- 注意不要與“定義結構體型別的同時定義結構體型別變數”混淆:
使用typedef關鍵字定義結構體型別 | 定義結構體型別的同時定義結構體型別變數 |
---|---|
typedef struct student { int age; int height; }std; //std相當於struct student |
struct student { int age; int height; }std1,std2; //定義了student資料型別的結構體和std1 、std2結構體變數 |
二、使用typedef定義結構體指標
定義一個名為TreeNode的結構體,和指向該結構體型別的指標PtrToTreeNode(不使用typedef):
struct TreeNode
{
int Element;
struct TreeNode* LeftChild;
struct TreeNode* RightChild;
};
struct TreeNode *PtrToTreeNode; //定義指標
使用typedef關鍵字用一個單詞Node代替struct TreeNode,並定於指向該結構體型別的指標PtrToTreeNode:
struct TreeNode
{
int Element;
struct TreeNode* LeftChild;
struct TreeNode* RightChild;
};
typedef struct TreeNode Node; //用Node代替struct TreeNode
Node *PtrToTreeNode; //定義指標
將結構體的定義和typedef連在一起寫,再次縮短程式碼:
typedef struct TreeNode
{
int Element;
struct TreeNode* LeftChild;
struct TreeNode* RightChild;
}Node; //定義結構體並用Node代替struct TreeNode
Node *PtrToTreeNode; //定義指標
還可以繼續縮短程式碼,直接定義了指向結構體型別的指標,但是這種寫法沒有為結構體起一個別名。
typedef struct TreeNode
{
int Element;
struct TreeNode* LeftChild;
struct TreeNode* RightChild;
} *PtrToTreeNode; //直接定義指標
- 在定義結構體時,省略struct後面的結構體名也是可以的,但是由於沒有名字,操作(如定義結構體變數)只能在定義的同時進行。(給它起個名字就那麼難麼…qwq)
相關推薦
typedef關鍵字與結構體、結構體指標的定義
一、使用typedef定義結構體 typedef用來定義新的資料型別,通常typedef與結構體的定義配合使用。使用typedef的目的使結構體的表達更加簡練(所以說typedef語句並不是必須使用的)。 定義一個名字為TreeNode的結構體型別(現在並沒
Android JNI程式設計(六)——C語言函式指標、Unition聯合體、列舉、Typedef別名、結構體、結構體指標
一:函式指標 1.函式指標顧名思義就是定義一個指標變數指向一個函式,和一級指標並沒有很大的區別我們看如下程式碼就很清楚的知道了 #include<stdio.h> #include<stdlib.h> //定義一個函式 in
結構體、公用體、枚舉
std 例如 每一個 指針變量 .... 需要 整體 ont 判斷 一.結構體類型 1.結構體變量的定義與使用 ? 定義結構體變量的方式 ? 先申明結構體類型再定義變量名 struct stu //stu:結構體類型名 {
字節對齊-------結構體、共用體
C/C++字節對齊結構體字節對齊:(結構體成員的數據類型為基本數據類型(int,double,char,short,long等))結構體的總大小是結構體成員中最寬基本數據類型大小的整數倍#include<iostream>using namespace std;struct S0{int a;ch
結構體、共用體。面試必用
地址 類型 有一個 不同類 作用域 圖片 將不 har 存儲 結構體:將不同類型得數據有序地組合在一起,構造出一個新的數據類型,這種形式稱為結構體。 結構體是多種類型組合得數據類型。 還有一個比較重要得知識點:結構體類型得靜態方法 在結構體中說明得靜態成員屬於引用性
【C/C++開發】函式使用結構體、結構體指標作為返回值分析
函式使用結構體、結構體指標作為返回值分析 32位機,gcc編譯器 使用結構體作為返回值 分析反彙編程式碼可知,當被呼叫的子函式返回值為結構體的時候,呼叫函式將分配一段空間用於存放返回的結構體(使用一個結構體變數接受返回值),並將這段空間的地址作為呼叫時的引數壓棧。子程式不負責對要返回的結構體分
C語言(三 字串、結構體、共用體、輸入輸出)
字串 字串是儲存了一些字元,最後以null(’/0’)結尾的一維字元陣列。 char str[6] = {'h','e','l','l','o','/0'}; char str[ ] = "hello" ; 還有一些字串操作函式: 1、strcpy(s1,s2) 複製s2到s1 2
結構體、共用體和列舉型別(一)
定義描述三維座標點(x,y,z)的結構體型別變數,完成座標點的輸入和輸出,並求出兩點之間的距離 程式碼如下: #include <iostream> #include <cmath> #define N 2 using namespace std; stru
C程式設計 | 結構體、共用體和連結串列
一、定義和使用結構體變數 1、自己建立結構體型別 C語言允許使用者自己建立由不同型別資料組成的組合型的資料結構,它稱為結構體(structre)。 例如在程式中要用的如下圖所示的資料結構,可以在程式中自己建立一個結構體型別: struct Student
結構體、結構體記憶體對齊
1、結構體 1.1、概述 在C語言中,除了常見的基本資料型別(整數型別short、int、long和浮點型別float、double)外,還有派生型別,如指標型別、陣列型別、結構型別、共用體型別等。 結構體是基本資料型別不能滿足需求時,使用者自己指定的一種資料結
結構體、結構體變數以及指向結構體變數的指標筆記
結構體:描述結構的組織形式,不分配記憶體 結構體變數定義:先定義結構體型別,再定義結構體變數 結構體變數的定義主要有3種形式 結構體型別與結構體變數概念的區別: (1)型別:不分配記憶體 變數:分配記憶體 (2)型別:不能賦值、存取、運算 變數:可以進行賦值、存
C結構體、共用體、列舉
一、結構體三種定義方式 1、先宣告結構體型別,再定義變數名 struct student { int num; char name[20]; char sex; int age; char addr[30]; } struct student student1
1-C語言之結構體、共用體、列舉
一、關鍵字說明 C語言有32個關鍵字,C語言通過關鍵字的使用使編譯器進行相關的操作 結構體對應關鍵字struct 共用體(聯合體)對應的關鍵字是union 列舉型別對應的關鍵字是enum 二、結構
iOS 自定義結構體、結構體轉換成物件
1、新建一個頭檔案,如下程式碼: #ifndef Header_h #define Header_h struct MyStruce{ char *name;//(指標形式) char *address; CGFloat age;
C語言之結構體、共用體、列舉
結構體的基本格式如下:#include <stdio.h> struct student //結構體型別的說明與定義分開。 宣告 { int age; /*年齡*/ float score; /*分數*/ char sex; /*性別*/ }; int main() {
golang基礎-結構體、結構體連結串列前後插入、節點新增刪除
結構體定義 刪除節點 新增節點 結構體定義 struct 用來自定義複雜資料結構 struct裡面可以包含多個欄位(屬性) struct型別可以定義方法,注意和函式的區分 struct型別是值型別 struct型別可以
C語言中利用共用體、結構體、位域實現位操作
編寫過51(MCU)程式的同學都知道51架構的MCU支援位操作,這是一個很方便的特性,在讀取/修改暫存器某位的值時非常方便快捷。但其他架構的MCU大多都不支援該特性,即不支援位操作,所在在對暫存器中某一位進行操作的時候都是and/or兩個操作共同使用,在編寫程式時非常麻煩。
09.go語言結構體、值接受者/指標接受者、指標和值
1.結構體 package main import ( “log” ) //結構體 type user struct { name string em
結構體、結構體體指標作為函式返回值
函式使用結構體、結構體指標作為返回值分析 32位機,gcc編譯器 使用結構體作為返回值 分析反彙編程式碼可知,當被呼叫的子函式返回值為結構體的時候,呼叫函式將分配一段空間用於存放返回的結構體(使用一個結構體變數接受返回值),並將這段空間的地址作為呼叫時
openhtmltopdf 支持自定義字體、粗體
pan static ren -s 默認 多個 repl text 優先級 一、支持自定義字體 private static void renderPDF(String html, OutputStream outputStream) throws Exception {