最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

柔性數(shù)組概念:

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

它也是結構體最后一個成員

也就是說,它存在結構體最后一個成員的位置上

特點:

1.柔性數(shù)組在結構體的大小是未知的,在sizeof中不計算其大小

#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.在結構體中,如果存在柔性數(shù)組,就必須滿足它的前面含有其它的成員,來申請空間,,因為他的大小本身是未知的,不計算大小。

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

與指針動態(tài)開辟的比較

在日常的編程中,有時候需要在結構體中存放一個長度動態(tài)的數(shù)組

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

指針動態(tà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;
}

通過柔性數(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);
	//使用
	//改變申請的空間
	struct S* tmp= (struct S*)realloc(ps, sizeof(struct S)+80);
	if (tmp == NULL)
	{
		return;
	}
	if (tmp != NULL)
	{
		ps = tmp;
	}
	return 0;
}

 

指針動態(tài)開辟的缺點

1.此方式會多次進行開辟于釋放動態(tài)申請的空間,就容易會導致錯誤

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

當指針動態(tài)開辟的足夠多的時候,中間就會出現(xiàn)很多內存碎片,每個內存碎片不連續(xù)

就會導致空間的浪費

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

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

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容! 

相關文章

  • C語言 操作符分類解析與使用

    C語言 操作符分類解析與使用

    C 語言提供了豐富的操作符,有:算術操作符,移位操作符,位操作符,邏輯操作符,逗號表達式。讓我們通讀本篇來詳細了解吧
    2021-11-11
  • C++返回值是類名和返回值是引用的區(qū)別及說明

    C++返回值是類名和返回值是引用的區(qū)別及說明

    這篇文章主要介紹了C++返回值是類名和返回值是引用的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++ 自由存儲區(qū)是否等價于堆你知道嗎

    C++ 自由存儲區(qū)是否等價于堆你知道嗎

    自由存儲是C++中通過new與delete動態(tài)分配和釋放對象的抽象概念,而堆(heap)是C語言和操作系統(tǒng)的術語,是操作系統(tǒng)維護的一塊動態(tài)分配內存
    2021-08-08
  • 詳解C++ 多態(tài)的實現(xiàn)及原理

    詳解C++ 多態(tài)的實現(xiàn)及原理

    這篇文章主要介紹了C++ 多態(tài)的實現(xiàn)及原理,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 使用C/C++讀取matlab中.mat格式數(shù)據(jù)的操作

    使用C/C++讀取matlab中.mat格式數(shù)據(jù)的操作

    這篇文章給大家介紹了使用C/C++讀取matlab中.mat格式數(shù)據(jù)的操作,文中通過圖文結合的方式介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • C語言實現(xiàn)字符串轉浮點函數(shù)的示例

    C語言實現(xiàn)字符串轉浮點函數(shù)的示例

    字符串不僅可以轉換為整數(shù),也可以轉換為浮點數(shù),本文主要介紹了C語言實現(xiàn)字符串轉浮點函數(shù)的示例,具有一定的參考價值,感興趣的可以了解一下
    2022-02-02
  • Qt5中QML自定義環(huán)形菜單/環(huán)形選擇框的實現(xiàn)

    Qt5中QML自定義環(huán)形菜單/環(huán)形選擇框的實現(xiàn)

    本文主要介紹了Qt5中QML自定義環(huán)形菜單/環(huán)形選擇框的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C/C++模擬實現(xiàn)煙花效果的示例代碼

    C/C++模擬實現(xiàn)煙花效果的示例代碼

    這篇文章主要為大家詳細介紹了C/C++模擬實現(xiàn)煙花效果的兩種簡單方法,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解下
    2024-01-01
  • 詳解C語言實現(xiàn)推箱子的基本功能

    詳解C語言實現(xiàn)推箱子的基本功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)推箱子的基本功能的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++實現(xiàn)保存數(shù)據(jù)至EXCEL

    C++實現(xiàn)保存數(shù)據(jù)至EXCEL

    這篇文章主要介紹了C++實現(xiàn)保存數(shù)據(jù)至EXCEL,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

宜君县| 犍为县| 彭州市| 赤城县| 金阳县| 米林县| 方城县| 龙南县| 荥阳市| 莱阳市| 德保县| 巴彦淖尔市| 穆棱市| 三河市| 寿宁县| 肃北| 汕尾市| 台湾省| 武定县| 宜黄县| 望江县| 开封市| 宁明县| 高淳县| 简阳市| 赤水市| 榆林市| 化德县| 车险| 新河县| 丹东市| 郑州市| 吉林省| 定襄县| 睢宁县| 建昌县| 晋城| 陵川县| 醴陵市| 十堰市| 建阳市|