日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于结构体里面结构体的申明和使用

發(fā)布時(shí)間:2023/12/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于结构体里面结构体的申明和使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

申請(qǐng):

?

typedef struct Vo{int Voltage;float Delay_ms;char Enable;}Volt_Def;typedef struct ed{float Delay_ms;int Level;}Edge_Def;typedef struct Ed_hard{Edge_Def a;Edge_Def b;Edge_Def c;}HARD_RESET;int power_sel = 0xff;typedef struct power_x{Volt_Def *VO_One=new Volt_Def;Volt_Def *VO_Two=new Volt_Def;Volt_Def *VO_Three=new Volt_Def;Volt_Def *VO_Four=new Volt_Def;Volt_Def *VO_Five=new Volt_Def;Volt_Def *VO_Six=new Volt_Def;Volt_Def *VSP=new Volt_Def;Volt_Def *VSN=new Volt_Def;HARD_RESET *TP_RESET=new HARD_RESET;HARD_RESET *LCD_RESET=new HARD_RESET;HARD_RESET *DPHY_POWER=new HARD_RESET;HARD_RESET *DPHY_RESET=new HARD_RESET;}Power_XX;Power_XX Power_up, Power_down;

?

?

?

使用:

??Power_up.VO_One->Voltage=strtoul(VO1->GetText(), NULL, 0);

參考:(下面為摘抄)

?一.new的用法:

1. new() 分配這種類型的一個(gè)大小的內(nèi)存空間,并以括號(hào)中的值來(lái)初始化這個(gè)變量;

2. new[]
分配這種類型的n個(gè)大小的內(nèi)存空間,并用默認(rèn)構(gòu)造函數(shù)來(lái)初始化這些變量;

char * p=new char("Hello");

char* p=new char[6];

//p="Hello";

3.開(kāi)辟單變量地址空間

1)new int; //開(kāi)辟一個(gè)存放數(shù)組的存儲(chǔ)空間,返回一個(gè)指向該存儲(chǔ)空間的地址.int *a = new int
即為將一個(gè)int類型的地址賦值給整型指針a.

2)int *a = new int(5)
作用同上,但是同時(shí)將整數(shù)賦值為5

4.開(kāi)辟數(shù)組空間

一維: int *a = new
int[100];開(kāi)辟一個(gè)大小為100的整型數(shù)組空間

二維: int **a = new
int[5][6]

三維及其以上:依此類推.

一般用法: new 類型 [初值]

5.
當(dāng)使用new運(yùn)算符定義一個(gè)多維數(shù)組變量或數(shù)組對(duì)象時(shí),它產(chǎn)生一個(gè)指向數(shù)組第一個(gè)元素的指針,返回的類型保持了除最左邊維數(shù)外的所有維數(shù)。例如:

int
*p1 = new int[10];

返回的是一個(gè)指向int的指針int*

int (*p2)[10] = new
int[2][10];

new了一個(gè)二維數(shù)組, 去掉最左邊那一維[2], 剩下int[10],
所以返回的是一個(gè)指向int[10]這種一維數(shù)組的指針int (*)[10].

int (*p3)[2][10] = new
int[5][2][10]; new了一個(gè)三維數(shù)組, 去掉最左邊那一維[5], 還有int[2][10],
所以返回的是一個(gè)指向二維數(shù)組int[2][10]這種類型的指針int
(*)[2][10].

例子:

#include

#include

using namespace
std;

int main() {

int *a = new int[34];

int *b = new
int[];

int (*c)[2] = new int[34][2];

int (*d)[2] = new
int[][2];

int (*e)[2][3] = new int[34][2][3];

int (*f)[2][3] = new
int[][2][3];

a[0] = 1;

b[0] = 1;
//運(yùn)行時(shí)錯(cuò)誤,無(wú)分配的內(nèi)存,b只起指針的作用,用來(lái)指向相應(yīng)的數(shù)據(jù)

c[0][0] = 1;

d[0][0] = 1;
//運(yùn)行時(shí)錯(cuò)誤,無(wú)分配的內(nèi)存,d只起指針的作用,用來(lái)指向相應(yīng)的數(shù)據(jù)

e[0][0][0] = 1;

f[0][0][0] = 1;
//運(yùn)行時(shí)錯(cuò)誤,無(wú)分配的內(nèi)存,f只起指針的作用,用來(lái)指向相應(yīng)的數(shù)據(jù)

cout<<typeid(a).name()<<endl;

cout<<typeid(b).name()<<endl;

cout<<typeid(c).name()<<endl;

cout<<typeid(d).name()<<endl;

cout<<typeid(e).name()<<endl;

cout<<typeid(f).name()<<endl;

delete[]
a; delete[] b; delete[] c;

delete[] d; delete[] e; delete[]
f;

}

輸出結(jié)果:

int *

int *

int (*)[2]

int
(*)[2]

int (*)[2][3]

int
(*)[2][3]



6.new運(yùn)算符

最常用的是作為運(yùn)算符的new,比如:

string *str =
new string(“test new”);

作為運(yùn)算符,new和sizeof一樣,是C
內(nèi)置的,你不能對(duì)它做任何的改變,除了使用它。

new會(huì)在堆上分配一塊內(nèi)存,并會(huì)自動(dòng)調(diào)用類的構(gòu)造函數(shù)。

7.new函數(shù)

第二種就是new函數(shù),其實(shí)new運(yùn)算符內(nèi)部分配內(nèi)存使用的就是new函數(shù),原型是:

void
*operator new(size_t
size);

new函數(shù)返回的是一個(gè)void指針,一塊未經(jīng)初始化的內(nèi)存。如你所見(jiàn),這和C語(yǔ)言的malloc行為相似,你可以重載new函數(shù),并且增加額外的參數(shù),但是必須保證第一個(gè)參數(shù)必須是size_t類型,它指明了分配內(nèi)存塊的大小,C
允許你這么做,當(dāng)然一般情況下這是不必要的。如果重載了new函數(shù),在使用new操作符時(shí)調(diào)用的就是你重載后的new函數(shù)了。

如果使用new函數(shù),和語(yǔ)句string
*str = new string(“test new”)相對(duì)的代碼大概是如下的樣子:

1. string *str =
(string*)operator new(sizeof(string));

2. str.string(“test
new”);

3. //
當(dāng)然這個(gè)調(diào)用時(shí)非法的,但是編譯器是沒(méi)有這個(gè)限制的

這還不算完,還有第三種的new存在。

8.placement
new

第三種,placement
new,這也是new作為函數(shù)的一種用法,它允許你在一塊已存在的內(nèi)存上分配一個(gè)對(duì)象,而內(nèi)存上的數(shù)據(jù)不會(huì)被覆蓋或者被你主動(dòng)改寫,placement
new同樣由new操作符調(diào)用,調(diào)用格式是:

new (buffer) type(size_t
size);

先看看下面的代碼:

4. char str[22];

5. int data =
123;

6. int *pa = new (&data) int;

7. int *pb = new (str)
int(9);

結(jié)果*pa = 123(未覆蓋原數(shù)據(jù)),而*pb = 9(覆蓋原數(shù)據(jù)),可以看到placement new
并沒(méi)有分配新的內(nèi)存,也可以使用在棧上分配的內(nèi)存,而不限于堆。

為了使用placement new
你必須包含或者

其實(shí)placement new和第二種一樣,只不過(guò)多了參數(shù),是函數(shù)new的重載,語(yǔ)法格式為:

void
*operator new(size_t, void* buffer);

它看起來(lái)可能是這個(gè)樣子:

void *operator
new(size_t, void* buffer) { return
buffer;}

和new對(duì)應(yīng)的就是delete了,需要回收內(nèi)存啊,不然就泄漏了,這個(gè)下次再寫吧,回憶一下今天的內(nèi)容先。

二.delete用法:

1.
int *a = new int;

delete a; //釋放單個(gè)int的空間

2.int *a = new
int[5];

delete [] a;
//釋放int數(shù)組空間

要訪問(wèn)new所開(kāi)辟的結(jié)構(gòu)體空間,無(wú)法直接通過(guò)變量名進(jìn)行,只能通過(guò)賦值的指針進(jìn)行訪問(wèn).

用new和delete可以動(dòng)態(tài)開(kāi)辟,撤銷地址空間.在編程序時(shí),若用完一個(gè)變量(一般是暫時(shí)存儲(chǔ)的數(shù)組),下次需要再用,但卻又想省去重新初始化的功夫,可以在每次開(kāi)始使用時(shí)開(kāi)辟一個(gè)空間,在用完后撤銷它.



總結(jié)

1.
函數(shù)new

void *operator new(size_t size); 在堆上分配一塊內(nèi)存,和placement new(void
*operator new(size_t, void* buffer)); 在一塊已經(jīng)存在的內(nèi)存上創(chuàng)建對(duì)象,如果你已經(jīng)有一塊內(nèi)存,placement
new會(huì)非常有用,事實(shí)上,它STL中有著廣泛的使用。

2. 運(yùn)算符new

最常用的new,沒(méi)什么可說(shuō)的。

3.
函數(shù)new不會(huì)自動(dòng)調(diào)用類的構(gòu)造函數(shù),因?yàn)樗鼘?duì)分配的內(nèi)存類型一無(wú)所知;而運(yùn)算符new會(huì)自動(dòng)調(diào)用類的構(gòu)造函數(shù)。

4.
函數(shù)new允許重載,而運(yùn)算符new不能被重載。

?

轉(zhuǎn)載于:https://www.cnblogs.com/xifengib/p/5882555.html

總結(jié)

以上是生活随笔為你收集整理的关于结构体里面结构体的申明和使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 游戏涩涩免费网站 | 香蕉黄视频 | 国产suv精品一区二区6 | 性人久久久久 | 中日韩在线 | 性猛交富婆╳xxx乱大交天津 | 日本www色 | 麻豆一区在线 | 日本电影大尺度免费观看 | 激情六月天 | 狼人狠狠干 | 亚洲第一黄色片 | 欧美日韩在线播放视频 | 麻豆网页| 欧美大黄 | 久久影院一区 | 日韩精品一区二区三区色欲av | 色午夜av | 进去里视频在线观看 | 在线免费看mv的网站入口 | 91丝袜美腿 | 欧美精品日韩在线观看 | 亚洲午夜色 | 欧美透逼视频 | 超碰在线成人 | 亚洲精品免费看 | 欧美性猛交xxxx黑人交 | av片子在线观看 | 免费古装一级淫片潘金莲 | 亚洲精品一区二区三区不卡 | 搡老熟女国产 | 国产精品综合网 | 久久久久在线观看 | 久久人人添人人爽添人人片 | 中文字幕免费高清 | 久久深夜视频 | 国产精品久久久精品三级 | 在线免费视频你懂的 | 激情欧美综合 | 色婷婷av一区二区三区在线观看 | 国产一级自拍视频 | 国产69精品一区二区 | 国产一区二区三区麻豆 | 东方成人av| 老司机福利院 | 少妇精品偷拍高潮白浆 | 美女流白浆视频 | 精品无码久久久久久久久果冻 | 黄色片a| 久久久无码精品亚洲国产 | 波多野吉衣在线观看视频 | 欧美高清在线视频 | 亚洲无线观看 | 在线黄网| 97国产免费 | 黄色片在线观看免费 | 在线观看毛片网站 | 五月激情婷婷丁香 | 精品久久久久久久久久岛国gif | 视频国产在线 | 法国空姐在线观看免费 | 国产精品伦理一区二区 | 黄色高清视频在线观看 | 国产美女视频一区二区 | 黄色wwww| 亚洲大片精品 | 精品国产91久久久久久久妲己 | 女~淫辱の触手3d动漫 | 激情999 | 欧美日韩精品电影 | 人人干人人舔 | 激情五月婷婷久久 | 国产一区二区三区在线看 | 中文字幕av网 | 日韩中文字幕视频在线观看 | 无码人妻精品一区二 | 成人av黄色 | 丰满熟妇肥白一区二区在线 | 亚洲20p| 日本成人一级片 | 影音先锋男人天堂 | 无码黑人精品一区二区 | 久久久久久久久久久国产精品 | 一本到在线观看 | 国产无遮挡一区二区三区毛片日本 | 男人天堂a | 清清草免费视频 | 中文字幕在线视频精品 | 综合 欧美 亚洲日本 | 69久久久久| 香蕉日日 | 国精产品一区一区三区视频 | 欧美一级特黄视频 | 欧美午夜精品久久久久久孕妇 | 黄色一级网址 | 中文字幕超清在线观看 | 中文字幕第8页 | 黄色免费入口 | 欧美一二三级 |