欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言中的柔性數(shù)組你真的了解嗎

 更新時(shí)間:2022年02月16日 15:45:04   作者:誠(chéng)摯的喬治  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中的柔性數(shù)組你,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

柔性數(shù)組概念:

柔性數(shù)組就是一種特殊的數(shù)組

它也是結(jié)構(gòu)體最后一個(gè)成員

也就是說(shuō),它存在結(jié)構(gòu)體最后一個(gè)成員的位置上

特點(diǎn):

1.柔性數(shù)組在結(jié)構(gòu)體的大小是未知的,在sizeof中不計(jì)算其大小

#include<stdio.h>
struct S
{
	int n ;
	int arr[0];//或者int arr[];
};
main()
{
	printf("The size of the structure is  %d",sizeof(struct S));
	return 0;
}

2.在結(jié)構(gòu)體中,如果存在柔性數(shù)組,就必須滿(mǎn)足它的前面含有其它的成員,來(lái)申請(qǐng)空間,,因?yàn)樗拇笮”旧硎俏粗?,不?jì)算大小。

3.包含柔性數(shù)組的結(jié)構(gòu)體要靠malloc去動(dòng)態(tài)申請(qǐng)這塊空間,這就體現(xiàn)了柔性數(shù)組的柔,也就是可以控制大小,且分配的空間一定滿(mǎn)足大于其它成員的大小。

與指針動(dòng)態(tài)開(kāi)辟的比較

在日常的編程中,有時(shí)候需要在結(jié)構(gòu)體中存放一個(gè)長(zhǎng)度動(dòng)態(tài)的數(shù)組

一般的做法,是在結(jié)構(gòu)體中定義一個(gè)指針成員,這個(gè)指針成員指向該數(shù)組所在的動(dòng)態(tài)內(nèi)存空間

指針動(dòng)態(tài)開(kāi)辟

#include<stdio.h>
struct S
{
	int n;
	int* arr;
};
 
int main()
{
	struct S* ps = (struct S*)malloc(sizeof(struct S));
	ps->n = 100;
	ps->arr = (int*)malloc(40);
	free(ps->arr);
	ps->arr = NULL;
	free(ps);
	ps = NULL;
	return 0;
}

通過(guò)柔性數(shù)組來(lái)實(shí)現(xiàn)如下:

柔性數(shù)組

#include<stdio.h>
struct S
{
	int n;
	int arr[0];//柔性數(shù)組
};
int main()
{
	struct S* ps = (struct S*)malloc(sizeof(struct S)+40);
	//使用
	//改變申請(qǐng)的空間
	struct S* tmp= (struct S*)realloc(ps, sizeof(struct S)+80);
	if (tmp == NULL)
	{
		return;
	}
	if (tmp != NULL)
	{
		ps = tmp;
	}
	return 0;
}

 

指針動(dòng)態(tài)開(kāi)辟的缺點(diǎn)

1.此方式會(huì)多次進(jìn)行開(kāi)辟于釋放動(dòng)態(tài)申請(qǐng)的空間,就容易會(huì)導(dǎo)致錯(cuò)誤

2.容易出現(xiàn)內(nèi)存碎片

當(dāng)指針動(dòng)態(tài)開(kāi)辟的足夠多的時(shí)候,中間就會(huì)出現(xiàn)很多內(nèi)存碎片,每個(gè)內(nèi)存碎片不連續(xù)

就會(huì)導(dǎo)致空間的浪費(fèi)

3.相較于柔性數(shù)組,CPU訪問(wèn)的速度要慢一些

CPU訪問(wèn)內(nèi)存大部分在訪問(wèn)一個(gè)空間后,就會(huì)訪問(wèn)相鄰的空間,就不一次性訪問(wèn)下一個(gè)連續(xù)的空間,這就會(huì)導(dǎo)致,在一定程度上的降速。 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

  • C++中共用體的定義與應(yīng)用總結(jié)

    C++中共用體的定義與應(yīng)用總結(jié)

    共同體的定義類(lèi)似結(jié)構(gòu)體,不過(guò)共同體的所有成員都在同一段內(nèi)存中存放,起始地址一樣,并且同一時(shí)刻只能使用其中的一個(gè)成員變量
    2013-10-10
  • 使用C++17實(shí)現(xiàn)JSON庫(kù)設(shè)計(jì)思路示例全解

    使用C++17實(shí)現(xiàn)JSON庫(kù)設(shè)計(jì)思路示例全解

    這篇文章主要為大家介紹了使用C++17實(shí)現(xiàn)JSON庫(kù)設(shè)計(jì)思路示例全解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C++ Explicit關(guān)鍵字詳細(xì)解析

    C++ Explicit關(guān)鍵字詳細(xì)解析

    以下是對(duì)C++中Explicit關(guān)鍵字的用法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-09-09
  • C++連接mysql數(shù)據(jù)庫(kù)(改進(jìn)版)

    C++連接mysql數(shù)據(jù)庫(kù)(改進(jìn)版)

    C++是大家都非常熟悉的,也是大家平時(shí)辦公中經(jīng)常會(huì)用到的,下面這篇文章主要給大家介紹了關(guān)于C++連接mysql數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 基于matlab實(shí)現(xiàn)DCT數(shù)字水印嵌入與提取

    基于matlab實(shí)現(xiàn)DCT數(shù)字水印嵌入與提取

    數(shù)字水印技術(shù)是將一些標(biāo)識(shí)信息直接嵌入數(shù)字載體當(dāng)中,?或間接表示在信號(hào)載體中,?且不影響原載體的使用價(jià)值。本文主要為大家介紹了基于matlab如何實(shí)現(xiàn)數(shù)字水印的嵌入與提取,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • C語(yǔ)言編寫(xiě)五子棋游戲

    C語(yǔ)言編寫(xiě)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言編寫(xiě)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語(yǔ)言指針和數(shù)組深入探究使用方法

    C語(yǔ)言指針和數(shù)組深入探究使用方法

    在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱(chēng)為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類(lèi)型、指向相同數(shù)據(jù)類(lèi)型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活
    2022-08-08
  • 深入解析Linux下\r\n的問(wèn)題

    深入解析Linux下\r\n的問(wèn)題

    本篇文章是對(duì)Linux下\r\n的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C的|、||、&、&&、異或、~、!運(yùn)算符

    C的|、||、&、&&、異或、~、!運(yùn)算符

    這篇文章主要介紹了C的|、||、&、&&、異或、~、!運(yùn)算符,需要的朋友可以參考下
    2014-06-06
  • C++分析講解類(lèi)的靜態(tài)成員函數(shù)如何使用

    C++分析講解類(lèi)的靜態(tài)成員函數(shù)如何使用

    與靜態(tài)數(shù)據(jù)成員不同,靜態(tài)成員函數(shù)的作用不是為了對(duì)象之間的溝通,而是為了能處理靜態(tài)數(shù)據(jù)成員,靜態(tài)成員函數(shù)沒(méi)有this指針。既然它沒(méi)有指向某一對(duì)象,也就無(wú)法對(duì)一個(gè)對(duì)象中的非靜態(tài)成員進(jìn)行默認(rèn)訪問(wèn)
    2022-04-04

最新評(píng)論