![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
c結構初始化 在 コバにゃんチャンネル Youtube 的精選貼文
![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
Search
直接初始化:在C中不能直接初始化结构体的数据成员,但是在C++中可以。 1 2 3 4 5 ... <看更多>
用 結構 型別宣告指標參數- 007 結構 (struct) 與函式導向(程序導向) ... C 資料 結構 Part 2 – 陣列的多個使用範例/ [ 初始 值設定、資料批次處理統計]. ... <看更多>
#1. 在C 中初始化結構體| D棧 - Delft Stack
使用初始化列表風格的符號來初始化C 語言中的一個結構體. 結構體 struct 可能是C 語言中構建複雜資料結構最重要的關鍵字,它是一個內建的物件, ...
#2. 有關C語言的struct進階初始化@ 程式專欄 - 隨意窩
假設有一個student的結構定義如下:typedef struct student{ char name[50]; int studentNo; int age;}student;按照一般教科書上的寫法,初始化的方式是先宣告 ...
假如有如下結構體。 struct A { int b; int c; }. (1)指定初始化(Designated Initializer)實現上有兩種方式,一種是通過點號加賦值符號實現,即 ...
#4. C語言中結構體(struct)的幾種初始化方法- IT閱讀
C 語言中結構體(struct)的幾種初始化方法. 分類:IT技術 時間:2016-10-15. 本文給大家總結的struct數據有3種初始化方法. 1、順序. 2、C風格的亂序. 3、C++風格的亂序.
2019年1月9日 — 定義. struct InitMember { int first; double second; char* third; float four; };. 方法一:定義時賦值. struct InitMember test = {-10 ...
2018年3月15日 — 定义struct InitMember{ int first; double second; char* third; float four;};方法一:定义时赋值struct InitMember test = {-10,3.141590 ...
#7. [C 語言] 程式設計教學:如何使用結構(Struct) | 開源技術教學網
由於C 沒有內建的物件導向語法,使用指向結構的指標來模擬C++ (或Java 或C#) ... 但這種初始化結構的方式寫死該結構的屬性的位置,若屬性有更動需一併更動相關程式碼, ...
#8. 定義結構
若要宣告結構陣列並初始每個結構成員,可以如下: struct Account accts[] = { {"123-456-789", "Justin Lin", 1000}, {"789-654-321", "Monica Huang", 1000} };.
所以在声明结构体类型的时候,不可以对里面的变量进行初始化。 定义结构体变量. 以上只是声明了一个数据类型——“结构体类型”。它只是一个类型,与int、 ...
#10. C语言结构体初始化 - 嗨客网
C 语言结构体初始化教程,在C 语言中,我们要初始化一个结构体,有三种方法,即,顺序初始化、乱序初始化和C++ 风格的初始化。
#11. [c]struct初始化進階用法designated initializers | by Lion - Medium
寫c程式單元測試時,看到強者我同事寫struct init 的方式,查了發現是designated initializers的用法,把它記錄下來和大家分享 . “[c]struct初始化進 ...
#12. C 结构体| 菜鸟教程
1、概述C 语言允许用户自己指定这样一种数据结构,它由不同类型的数据组合成一个整体, ... 从以上可以看到,结构体数组初始化的一般形式是在定义数组的后面加上: ...
#13. C语言结构体初始化的四种方法 - 开源基础软件社区
定义 struct InitMember { int first; double second; char* third; float four; };. 方法一:定义时赋值 struct InitMember test = {-10,3.141590,"method ...
#14. 初始設定式
如何在C++ 中初始化類別、結構、陣列和基本類型。 ... 初始設定式指定變數的初始值。 您可以初始化下列內容中的變數:. 變數的定義中:. C++
#15. C 語言:結構(struct)自訂不同資料型態綁一起 - 寫點科普
具體來說,這個程式的執行過程如下:. 在一片記憶體的區域中,main 函數會開始執行、呼叫了newone 函數。 在newone 函數中宣告並初始化一個局部 ...
#16. 关于c语言中结构体的初始化 - 腾讯云
也就是说,后面程序不能再定义此类型变量了,除非再写一次重复的struct。 关于结构体变量的初始化与初始化数组类似;. 也是使用花括号括起来,用逗号分隔 ...
#17. C++ - 使用标签的C 结构初始化.它有效,但如何? - 无涯教程网
C struct initialization using labels. It works, but how?我昨天发现了一些结构初始化代码,这让我很困惑.下面是一个例子: typedef struct { int first; int second; } ...
#18. 结构体与联合体初始化- C++中文- API参考文档
初始化 union 时,初始化器列表必须只有一个成员,它初始化联合体的首个成员,除非使用指派初始化器 (C99 起)。 union { int x; char c[4]; } u = {1}, // 令u.x 活跃, ...
#19. 结构体数组的定义与初始化- c语言编程 - 黑马程序员教程
struct Student { int num; char name[10]; char sex; }stus[20];. 结构体数组的初始化方式与普通类型的数组类似,都是通过为元素赋值的方式完成的。由于结构体 ...
#20. C語言結構體指標中的const成員怎麼初始化? - 劇多
C 語言結構體指標中的const成員怎麼初始化? ... int i = 0;. C* c = (C*)malloc(sizeof(C));. printf("Old: 0x%08X\n", c->p);. (int*)(c->p) = &i; // 最 ...
#21. C语言结构体(struct)最全的讲解(万字干货) - 电子工程专辑
也就是说,后面程序不能再定义此类型变量了,除非再写一次重复的struct。 对于结构体变量的初始化.
#22. [轉錄] struct的初始化,拷貝及指標成員的使用技巧 - Life-Geek
struct是C中重要的ADT。但是在一般講C的書中,往往只介紹了struct的定義、順序初始化及位域。 本文將筆者曾經用到的、看到的知識點羅列出來,與大家 ...
#23. 自定义结构体类型:struct使用详解-华为开发者论坛
为此,C语言提供了结构体变量(structure variable)提高表示数据的能力。 结构体是一些值的集合, ... 初始化结构变量与初始化数组的语法语法类似:.
#24. 初始化結構變數, 結構指標- C程式語言之一範例 - cosmicspace1
C 語言使用結構的好處是能將不同的資料型態宣告在一起, 若再使用結構指標來操作會更加方便及更有效率. 本範例有將結構指標當作函數的引數傳遞進入函數 ...
#25. c/c++ 结构体赋初值的小技巧 - 代码先锋网
Linux内核喜欢用第一种,使用第一种和第二种时,成员初始化顺序可变。 第四种: 因为C++中的struct可以看作class,结构体也可以拥有构造函数,所以我们可以通过结构 ...
#26. C结构体的初始化和赋值 - 编程猎人
结构 体对象的初始化有多种方式,分为指定初始化、顺序初始化、构造函数初始化。假如有如下结构体。 struct A { int b; int c; }.
#27. c语言结构体初始化及赋值,结构体的定义、初始化和赋值
在C++中,结构体与类在使用上已没有本质上的区别了,所以可以使用构造函数来初始化。如下代码所示:. struct Stu. {. int nNum;. bool bSex;. char szName[20];.
#28. 結構的初始化| 高等C語言
結構 的初始化— (Initialization) 直接設定欄位初始值. 這個範例程式為C99 的《指定器初始化》( Designated Initializers),使用gcc 時建議加上-std=C99 的參數。
#29. Struct and union initialization(结构体与联合体初始化)
初始化 联合时,初始化程序列表必须只有一个成员,它将初始化联合的第一个成员,除非使用了指定的初始化程序(自C99以来)。 union { int x; char c[4]; } u = {1}, // ...
#30. 如何初始化C/C++ Struct变量播报文章 - 百度经验
如何初始化C/C++ Struct变量,C/C++语言中的Struct类型能够将多个不同类型的变量合并在一起,想要访问Struct内部的变量只需要使用成员操作符即可, ...
#31. C语言结构体
这种方式有一个缺陷,如果某数据集有100个要素,就要定义100个变量,对100个变量初始化,把100个变量作为函数的参数传递,实在太麻烦。 在C语言中,使用结构 ...
#32. C++ 結構體初始化與賦值詳解 - WalkonNet
struct A { int b; int c; };. (1)順序初始化因為書寫起來較為簡約,是我們最常用的初始化方式,但相對於指定初始化,無法變更 ...
#33. C结构体的初始化和赋值 - 简书
1.结构体的初始化结构体是常用的自定义构造类型,是一种很常见的数据打包方法。结构体对象的初始化有多种方式,分为指定初始化、顺序初始化、构造函数 ...
#34. 数组,结构体初始化{0} (转载 - 阿里云开发者社区
for ( int i = 0; i < sizeof c /sizeof *c; i++) c[i]++; 因为结构也是一种集合类型,所以它们也可以用同样的方式初始化。因为C风格的struct的所有成员都是public型 ...
#35. C 語言中的結構初始化 - 陳鍾誠的網站
這個範例程式為C99 的《指定器初始化》( Designated Initializers),使用gcc 時建議加上-std=C99 的參數。 #include <stdio.h> typedef struct { char ...
#36. C语言的几种结构体Struct的赋值方法 - 程序员宅基地
C11标准下的struct初始化方法1.1 定义结构体类型时,定义结构体变量1.2 定义结构体 ... include <stdio.h>struct Init{ int a; double b; char *c;};1.1声明时初始化在 ...
#37. C语言结构体(struct)的定义、初始化和使用 - 微学苑
C 语言结构体(struct)的定义、初始化和使用. 结构体类型是一种由用户根据实际需要自己构造的数据类型,所以必须要“先定义,后使用”。也就是说,用户必须首先构造一个 ...
#38. C语言使用四种方法初始化结构体 - 脚本之家
这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所 ...
#39. c/c++結構體初始化總結 - 每日頭條
在閱讀GNU/Linux內核代碼時,我們會遇到一種特殊的結構初始化方式。該方式是某些C教材(如譚二版、K&R二版)中沒有介紹過的。
#40. C++结构体初始化与赋值 - 菜鸟笔记
今天看到项目中对自定义结构体初始化方式有点陌生,特在此罗列一下可用的结构体初始化的方式。 对结构体 struct A { int b; int c; }. 有几种初始化方式:. 第一种:
#41. C和C++结构体的初始化和赋值_xiaoyj22200837的专栏
C 中结构体是数据的集合,比较简单。初始化和赋值方式如下(CPP代码,VS编译器):. typedef struct MyStruct1 { int a; int b; int c; int d; }My1;
#42. c++ - initialize - 在類構造函數中初始化結構的正確方法 - Code ...
c++ struct object (3). 所以我想從ac頭文件中添加一個結構作為類成員到c ++類。 但是我收到了 cpp 文件的編譯器錯誤: bar was not declared inn this scope 。
#43. [C/C++基礎]-雙層結構初始化– jashliao部落格 - Zi 字媒體
一般的C/C++講解結構(struct)大都只舉例一層的結構,但有時我們卻要使用多層的結構,因此今天和各位(C/P)程式同好介紹如何實現雙層結構初始化。
#44. struct初始化- 碎语心弦 - 博客园
C 语言中struct初始化• 普通结构体的初始化假设我们有如下的一段代码,其中已有Student结构体,要求实例化一个Student对象并将其初始化。
#45. C语言结构体struct定义和使用(二) - 猿说编程
1.对结构体的成员逐个赋值 · 2.结构体变量的初始化也可以与定义同时完成 · 3.结构体部分初始化 · 4.按照任意的顺序使用指定初始化项目. 五.猜你喜欢.
#46. C语言_结构体的4种定义初始化方式及案例 - SegmentFault
结构 体是一种构造数据类型(构造数据类型:数组类型、结构体类型(struct)、共用体类型(union))。用途:把不同类型的数据组合成一个整体,通俗讲就像是 ...
#47. C语言中结构体struct初始化和赋值的几种方式- 优质文章推荐v2
在内核中 fs/ext3/indoe.c 中,一个struct初始化格式个这样的: static const struct address_space_operations ext3_writeback_aops = { .readpage ...
#48. C语言使用四种方法初始化结构体 - 球儿工具
这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 ...
#49. C语言中结构体(struct)的几种初始化方法 - 张生荣
C 语言中结构体(struct)的几种初始化方法本文给大家总结的struct数据有3种初始化方法1.顺序2.C风格的乱序3.C++风格的乱序下面通过示例代码详细介绍这三种初始化方法.
#50. C++结构体初始化 - 掘金
C ++结构体初始化. 2020年11月04日15:07 · 阅读1107. 关注. 当使用结构体时,一定要在定义结构体变量时,对所有成员变量进行初始化,否则,成员变量是随机值,导致出现 ...
#51. c結構體初始化不寫結構體變量名的高級用法 - 台部落
定義struct InitMember { int first; double second; char* third; float four; }; 方法一:定義時賦值struct InitMember test = {-10,3.
#52. c 結構體初始化 - Startu
C 語言結構體初始化的四種方法_老王的技術博客-CSDN博客_結構體初始化. 定義struct InitMember{ int first; double second; char* third; float four;};方法一:定義 ...
#53. 一个C/C++结构体初始化有趣的现象的更多相关文章 - BBSMAX
我们知道C语言当中结构可以使用{}进行初始化,例如有结构体定义如下: typedef struct type_t { int a; int b; int c; int d; }type_t; 我们可以使用下面的语句来初始化 ...
#54. C语言结构体初始化的三种方法| 阿然的博客
C 语言结构体初始化的三种方法. ... #include <stdio.h> struct student_st { char c; int score; const char *name; }; static void show_student(struct student_st ...
#55. 结构体初始化 - 技术文章
在内核文件里经常看到结构体里成员名以点开头,其实是C99提供的结构体初始化的方法之一。 下面看一下C语言结构体初始化的3种方法: typedef struct { int a;
#56. cgo C struct 的初始化
今天在看cgo 下面的例子是关于C struct的: package main /* #include <stdlib.h> struct employee { char *id; int age; }; */ import "C" import "unsafe"
#57. C++结构体初始化 - 作业部落
C ++结构体初始化. C++. 当使用结构体时,一定要在定义结构体变量时,对所有成员变量进行初始化,否则,成员变量是随机值,导致出现各种奇葩Bug。
#58. C/C++中结构体的定义以及实例化 - 赵大寳
直接初始化:在C中不能直接初始化结构体的数据成员,但是在C++中可以。 1 2 3 4 5
#59. C 語言- 初始化非零的struct 陣列 - 隨意寫寫
全域變數"widths_global" 應該是compiler在編譯時就填好初始值到.data section。而區域變數"widths" 到底是用什麼方式初始化?是用for loop嗎?
#60. 初始化- 維基百科,自由的百科全書
用於進行初始化的程式結構則稱為初始化器或初始化列表。 ... list)或」初始化列表」(initialization list),不過initializer list也是C++中用於初始化類或結構中的 ...
#61. 結構體初始化的四種方法 - 壹讀
這種方法和前一種類似,網上稱之為C++風格,類似於key-value鍵值對的方式,同樣不考慮順序。 blocktest={ type:1 ...
#62. C结构初始化? [复制] C structure initialization? [duplicate]
C结构初始化 ? [复制] C structure initialization? [duplicate] qa.icopy.site.
#63. C数组&结构体&联合体快速初始化 - 术之多
C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序。 C99标准新增指定初始化(Designated Initializer),即可 ...
#64. c語言struct 初始化
相信大家都知道struct结构体是C语言中非常重要的复合类型,初始化的方法很多,那么小编下面对这些方法进行总结,便于自己和大家以后查阅,有需要的可以参考借鉴。
#65. C语言结构体释放问题 - 极客教程
在下面的代码片段中,我们声明了 Person ,其内存分配如下图所示,三个点表示未初始化的内存。 void processPerson() { Person person; ...
#66. C语言四种初始化结构体的方法 - 编程宝库
C 语言四种初始化结构体的方法:& 什么是结构体在实际问题中,一组数据往往有很多种不同的数据类型。例如,登记学生的信息,可能需要用到char型的姓名,int型或char型的 ...
#67. C语言基础-NULL和0的区别及结构体初始化问题- 尚码园
序言继续总结C语言中的一些细枝末节的知识点,厘清不熟悉的地方。html 本文主要内容:node C语言中0和NULL的区别web 结构体初始化取值问题svg 1.
#68. 关于c ++:在结构中初始化默认值 - 码农家园
Initializing default values in a struct如果我只需要初始化C ++结构的几个选择值,这是否正确:[cc lang=cpp]struct foo { foo() : a(true), ...
#69. C 結構體初始化與賦值 - 程序員學院
C 結構 體初始化與賦值,結構體是常用的自定義構造型別,是一種很常見的資料打包方法。結構體物件的初始化有多種方式,分為順序初始化指定初始化建構函 ...
#70. 變數的初始化 - 丁培毅
在C 語言中, 對於基本型態的變數而言, 變數初始化和變數設定的外觀 ... 結構:. typedef struct StudentTag { int id; char name[20]; } Student;.
#71. c语言结构体的参数默认值_weixin_37964072的博客 - 程序员 ...
不同于c++具有构造函数,能够直接方便初始化的工具,c语言结构体成员初始化需要代码手动写入,比如下面这两种方式。 struct Member{ char* name; int age; char sex; }; ...
#72. c - 将struct初始化/重置为零/ nu
c - 将struct初始化/重置为零/ nu. struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; };. 我正在填充此结构,然后使用值。
#73. C语言中结构体的初始化- 代码天地
C 语言中结构体的初始化例子: struct point { int x; int y; int z;}//常规写法struct point pt1 = {10.
#74. C语言中结构体struct初始化和赋值的几种方式 - JciX
初始化 ; 赋值. 相关. http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-accordance-with-c-programming-language-standards.
#75. C语言标记化结构初始化语法 - ChinaUnix博客
在标准C中(C89)结构标准初始化是用{}来实始化,在C99的版本,采用了采用可读性更强的标记化实始化,这在LINUX内核和驱动很为常见。 这是ISO C99的用法.
#76. C语言结构体变量初始化的3种方式 - 入门小站
C 语言结构体变量初始化一,C语言结构体变量初始化二,C语言结构体变量初始化三(匿名结构体)
#77. C语言中的struct有类似构造函数的概念吗? - 知乎
C 语言没有构造函数的概念。如同内建类型的变量,. 定义全局或静态的struct 变量时,其成员会初始化为零;; 定义局部的struct 变量时,其成员为不确定值。
#78. C结构体初始化- 程序员ITS404
结构 体作为数据结构的基础,经常使用,其中初始化也有几种方法,这里详细介绍二、常规初始化(先定义再初始化) typedef struct { int bandrate; int databits; ...
#79. C语言结构体(struct)最全的讲解(万字干货) - 360doc个人 ...
也就是说,后面程序不能再定义此类型变量了,除非再写一次重复的struct。 对于结构体变量的初始化 先回忆一下 ...
#80. C语言高级编程:数组和结构体初始化为0的方法 - ICode9
测试平台:64位 X86 Ubuntu 1.代码:#include #include structst_stu{char*name;intage;intclass;};voidmain(void){inta[5]={0} ...
#81. C 结构体指针初始化 - Veryitman
这个是我们最早学习C 语言的时候,书上经常说的一个问题。在工作中,我们反而会 ... 结构体成员指针的初始化,指的是初始化结构体中指针变量的成员。
#82. C语言结构体初始化的四种方法 - 不灭的焱
方法一:定义时赋值struct Member test = {-10, 3.141590, "method one", 0.25}; 注意:对应的顺序,不能错位。
#83. 如何在c#中將結構struct初始化- 藍色小舖BlueShop
public struct pp { public int x, y; } static void Main(string[] args) { pp[] point1 =new pp[4]{{258,92},{254,69},{569,87},{85,69}}; Console.
#84. Cstring使用問題和struct結構體初始化方法匯總_C++入門知識
今天在寫程序為cstringarray變量操作時遇見: ASSERT_VALID fails with illegal vtable pointer. Assertion Failed: <unknown application>: File ...
#85. 初始化结构C++, C 全局结构默认初始化, Struct constructor C++ ...
联合或结构类型的静态成员变量的初始化程序必须是C。以下定义显示了完全初始化的结构: struct 如果结构变量具有自动storage,其成员没有默认初始化。在C 语言中,全局变量 ...
#86. c语言结构体学习整理(结构体初始化,结构体指针) - 程序员宝宝
c 语言中交换两个结构体的值(结构体指针) 1关于语言的结构体: 首先我们为什么要用到结构体,我们都已经学了很多int char …等类型还学到了同类型元素构成的数组, ...
#87. Re: [問題] static下的全域指標結構陣列該如何初始化 - 批踢踢 ...
被指到的結構變數每個位元組都是0 那麼再加上兩個靜態結構變數即可: static ... 以下是c++編譯器下類似c的做法: 比較符合你要的在宣告時就初值好.
#88. [C/C++基礎]-雙層結構初始化 - jashliao部落格
一般的C/C++講解結構(struct)大都只舉例一層的結構,但有時我們卻要使用多層的結構,因此今天和各位(C/P)程式同好介紹如何實現雙層結構初始化。
#89. 使用Rust FFI 時如何初始化不透明的C 結構? - Quickpon 極客幫
使用Rust FFI 時如何初始化不透明的C 結構? January 1, 2020. 這是我想在C 程式碼中執行的操作: #include <some_lib.h> int main() { some_lib_struct_t x; ...
#90. 007 結構(struct) 與函式導向(程序導向) 影片4 : C++ 教學進階
用 結構 型別宣告指標參數- 007 結構 (struct) 與函式導向(程序導向) ... C 資料 結構 Part 2 – 陣列的多個使用範例/ [ 初始 值設定、資料批次處理統計].
#91. c语言结构体初始化 - 学好吧
有关c语言结构体初始化的内容,包含有1、c语言全局结构体变量定义初始化2、C语言里面结构体初始化遇到问题!!求助高手!!3、c语言中结构体中有结构体 ...
#92. c語言struct union - Qtill
... 資料結構struct宣告語法如下: 例如你可以這樣定義一個員工的資料,別忘了在最後加上分號';' 接下來就是初始化變數了,你可以這樣初始化變數如果前言. c語言中的 ...
#93. C語言– struct 初始化
c 語言struct 初始化C語言 · C語言– struct 初始化– westwinddd · C語言中文網:c語言程序設計門戶網站(入門教程,編程軟… · C語言關于結構體必須要初始化嗎?-編程語言-CSDN ...
#94. 为什么不将C++ 结构初始化为`= {0}` 将其所有成员设置为0?
为什么不将C++ 结构初始化为`= {0}` 将其所有成员设置为0?[英] Why doesn't initializing a C++ struct to `= {0}` set all of its members to 0? 2020-11-28. c++ ...
#95. C++入门经典 - 第 360 頁 - Google 圖書結果
11.2.3 创建结构类型的对象创建 Book 类型的对象的第一种方法是,在初始化列表中为数据成员定义初始值。假定要用一本书的数据初始化变量 novel ,可以创建对象, ...
#96. C++ Primer Plus中文版 (第六版) (電子書) - 第 144 頁 - Google 圖書結果
接下來注意初始化的步驟: inflatable guest = { "Glorious Gloria",// name value 1.88, // volume value 29.99 // price ... C++11 結構初始化如同陣列,C++11 延伸了 ...
c結構初始化 在 Re: [問題] static下的全域指標結構陣列該如何初始化 - 批踢踢 ... 的推薦與評價
※ 引述《NDark (溺於黑暗)》之銘言:
: ※ 引述《kikiqqp (喵食罐頭)》之銘言:
: : 抱歉這個標題不太好,不過我不太清楚要怎麼描述
: : 今天我先定義了一個結構為
: : typedef struct
: : {
: : BYTE drv_type;
: : BYTE drv_mun;
: : BYTE drv_size;
: : BYTE drv_vol[512];
: : } VOLFS;
: : 然後再宣告一個指標
: : static VOLFS *VolFs[2];
: 因為你用c compiler所以整個事情搞得很複雜.
: 你的情形下
你不熟語法, 所以回答問題還把它複雜化了
: 初值的方式就是這樣
: static VOLFS *VolFs[2] =
: {
: {0},
: {0}
: } ;
static VOLFS* VolFs[2] = { NULL, NULL };
^^^^^^
星星我會習慣和元素型態放在一起, 既然是兩個指標那麼就用
NULL 來初始化. 但如果你其實是想要:
1. 兩個指標都指向已經存在的結構變數
2. 被指到的結構變數每個位元組都是 0
那麼再加上兩個靜態結構變數即可:
static VOLFS data[ 2 ] = {
{ 0, 0, 0, {0} },
{ 0, 0, 0, {0} }
};
static VOLFS* VolFs[2] = { &data[0], &data[1] };
靜態結構變數陣列 data 裡元素的初始化方式稱作:
aggregate initialization
https://ppt.cc/A8HN
雖然 data 跟 VolFs 初始化順序是不確定的, 但是取成員位址來
初始化另一個陣列不會影響執行 main() 之後的結果.
: 但這不是你要的,你要的就是另外寫一個初始化函式
: 在main的時候找機會去配置記憶體給那個陣列
: VOLFS* VOLFSInitilaize( void )
: {
: VOLFS* ret = (VOLFS*)malloc( sizeof( VOLFS ) ) ;
: memset( ret , 0 , sizeof( ret ) ) ;
: return ret ;
: }
: ...
: VolFs[0] = VOLFSInitilaize() ;
: VolFs[1] = VOLFSInitilaize() ;
: 以下是c++編譯器下類似c的做法
: 比較符合你要的在宣告時就初值好.
: #include <stdio.h>
: #include <stdlib.h>
: #include <string.h>
: typedef struct
: {
: char drv_type;
: char drv_mun;
: char drv_size;
: char drv_vol[512];
: } VOLFS;
: VOLFS* VOLFSInitilaize( void ) ;
: static VOLFS *VolFs[2] =
: {
: VOLFSInitilaize(),
: VOLFSInitilaize()
: } ;
: VOLFS* VOLFSInitilaize( void )
: {
: VOLFS* ret = (VOLFS*)malloc( sizeof( VOLFS ) ) ;
: memset( ret , 0 , sizeof( ret ) ) ;
: return ret ;
: }
: 正式c++的封裝方式會像這樣
: class VOLFS
: {
: public :
: VOLFS(void)
: : drv_type( 0 )
: , drv_mun( 0 )
: , drv_size( 0 )
: {
: memset( &drv_vol , 0 , sizeof( char ) * 512 ) ;
^^^^^^^^ 要搞清楚這邊的語意
: } ;
: public :
: char drv_type;
: char drv_mun;
: char drv_size;
: char drv_vol[512];
: } ;
: static VOLFS *VolFs[2] =
: {
: new VOLFS ,
: new VOLFS
: } ;
: 是不是乾淨多了?
: 不過經驗上還是建議減少使用static,減少使用多維陣列,
: 因為控制不好很容易出問題.
如果真的想把東西放堆積上, C++ 是這樣寫的...
static VOLFS* VolFs[2] = { nullptr, nullptr };
static struct VolFsManager {
VolFsManager() {
for(auto& elem : VolFs)
elem = new VOLFS;
}
~VolFsManager() {
for(auto elem : VolFs)
delete elem;
}
} manager;
int main() {
for(auto elem : VolFs)
assert(elem != nullptr);
}
很基本, 而且比你的還乾淨...
順帶一提, VolFs 這變數命名很爛...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.105.94.167
※ 編輯: loveme00835 來自: 112.105.94.167 (07/20 03:31)
... <看更多>