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

C語言不定長數(shù)組及初始化方法

 更新時(shí)間:2018年07月19日 14:40:23   作者:wanghao19920907  
今天小編就為大家分享一篇C語言不定長數(shù)組及初始化方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

C語言不支持不定長數(shù)組,要么malloc,要么在動(dòng)態(tài)的指定它的長度

動(dòng)態(tài)數(shù)組不能初始化,可使用memset

1.int* p = (int*)malloc(num);

2.int num = 5;

arr[num];

若使用arr[],則需要在后面對(duì)齊進(jìn)行初始化,來指定長度,否則編譯可以通過,但是默認(rèn)只有一個(gè)單元,超過一個(gè)單元的長度,在后面程序的運(yùn)行中有可能會(huì)被沖掉

int arr[] = {0};//定義了一個(gè)單元的數(shù)組,并不是不定長數(shù)組

最好不用使用arr[] = {0}來定義數(shù)組,定義數(shù)組之前應(yīng)要指定長度

int arr[256] = {0};

int a[256]={0};并不是把a(bǔ)的所有元素初始化為0,int a[256]={1};也不是把a(bǔ)所有的元素初始化為1.

數(shù)組可以用一個(gè)列值來初始化,例如

int v1[] ={1,2,3,4};
char v2[]={'a','b','c',0};

當(dāng)數(shù)組定義時(shí)沒有指定大小,當(dāng)初始化采用列表初始化了,那么數(shù)組的大小由初始化時(shí)列表元素個(gè)數(shù)決定。所以v1和v2分別為 int[4] 和char[4]類型。如果明確指定了數(shù)組大小,當(dāng)在初始化時(shí)指定的元素個(gè)數(shù)超過這個(gè)大小就會(huì)產(chǎn)生錯(cuò)誤。例如:

char v3[2] ={'a','b',0}; //錯(cuò)誤:太多的初始化值了
char v3[3] ={'a','b',0}; //正確

如果初始化時(shí)指定的的元素個(gè)數(shù)比數(shù)組大小少,剩下的元素都回被初始化為 0。

例如

int v5[8]={1,2,3,4};

等價(jià)于

int v5[8]={1,2,3,4,0,0,0,0};

注意沒有如下形式的數(shù)組賦值:

void f()
 {
 v4={'c','d',0}; //錯(cuò)誤:不是數(shù)組賦值
}

顧名思義,集合(aggregate)就是多個(gè)事物聚集在一起,這個(gè)定義包括混合類型的集合:像struct和class等,數(shù)組就是單一類型的集合。

初始化集合往往既冗長又容易出錯(cuò),而C++中集合初始化(aggregate initialization)卻變得很方便而且很安全。當(dāng)產(chǎn)生一個(gè)集合對(duì)象時(shí),要做的只是指定初始值就行了,然后初始化工作就由編譯器去承擔(dān)了。這種指定可以用幾種不同的風(fēng)格,它取決于正在處理的集合類型。但不管是哪種情況,指定的初值都要用大括號(hào)括起來。

比如一個(gè)內(nèi)部類型的數(shù)組可以這樣定義:

int a[5] = { 1, 2, 3, 4, 5 };

如果給出的初始化值多于數(shù)組元素的個(gè)數(shù),編譯器就會(huì)給出一條出錯(cuò)信息。但如果給的初始化少于數(shù)據(jù)元素的個(gè)數(shù),那將會(huì)怎么樣呢?

例如:

int b[6] = {0};

這時(shí),編譯器會(huì)把第一個(gè)初始化值賦給數(shù)組的第一個(gè)元素,然后用0賦給其余的元素。注意,如果定義了一個(gè)數(shù)組而沒有給出一列初始值時(shí),編譯器并不會(huì)去做初始化工作。所以上面的表達(dá)式是將一個(gè)數(shù)組初始化為零的簡(jiǎn)潔方法。

以上這篇C語言不定長數(shù)組及初始化方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析C++中的函數(shù)重載

    淺析C++中的函數(shù)重載

    這篇文章主要介紹了淺析C++中的函數(shù)重載,在C++中,可以為兩個(gè)或兩個(gè)以上的函數(shù)提供相同的函數(shù)名稱,只要參數(shù)類型不同,或者參數(shù)類型相同而參數(shù)個(gè)數(shù)不同,又或者參數(shù)類型參數(shù)個(gè)數(shù)相同,參數(shù)次序不同,稱為函數(shù)重載,需要的朋友可以參考下
    2023-08-08
  • C語言數(shù)學(xué)公式來實(shí)現(xiàn)土味表白

    C語言數(shù)學(xué)公式來實(shí)現(xiàn)土味表白

    大家好,本篇文章主要講的是C語言數(shù)學(xué)公式來實(shí)現(xiàn)土味表白,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++如何動(dòng)態(tài)的生成對(duì)象詳解

    C++如何動(dòng)態(tài)的生成對(duì)象詳解

    C++是不支持根據(jù)類名動(dòng)態(tài)地生成對(duì)象的,比如從一個(gè)文本文件中讀取類名然后構(gòu)造一個(gè)對(duì)象.主要原因是沒有豐富的動(dòng)態(tài)元信息,沒有單根類庫。那么下面這篇文章就來給大家介紹C++是如何動(dòng)態(tài)的生成對(duì)象,有需要的朋友們可以參考借鑒。
    2017-02-02
  • OpenMP?Parallel?Construct的實(shí)現(xiàn)原理詳解

    OpenMP?Parallel?Construct的實(shí)現(xiàn)原理詳解

    在本篇文章當(dāng)中我們將主要分析?OpenMP?當(dāng)中的?parallel?construct?具體時(shí)如何實(shí)現(xiàn)的,以及這個(gè)?construct?調(diào)用了哪些運(yùn)行時(shí)庫函數(shù),并且詳細(xì)分析這期間的參數(shù)傳遞,需要的可以參考一下
    2023-01-01
  • 詳解C++11中的右值引用與移動(dòng)語義

    詳解C++11中的右值引用與移動(dòng)語義

    本篇文章主要介紹了詳解C++11中的右值引用與移動(dòng)語義,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • C++實(shí)現(xiàn)俄羅斯方塊(linux版本)

    C++實(shí)現(xiàn)俄羅斯方塊(linux版本)

    這篇文章主要為大家詳細(xì)介紹了linux版本C++實(shí)現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++與C的差異分析

    C++與C的差異分析

    這篇文章主要介紹了C++與C的差異分析,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • C++實(shí)現(xiàn)LeetCode(9.驗(yàn)證回文數(shù)字)

    C++實(shí)現(xiàn)LeetCode(9.驗(yàn)證回文數(shù)字)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(9.驗(yàn)證回文數(shù)字),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c語言實(shí)現(xiàn)可自定義的游戲地圖

    c語言實(shí)現(xiàn)可自定義的游戲地圖

    這篇文章主要為大家詳細(xì)介紹了c語言實(shí)現(xiàn)可自定義的游戲地圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 深入剖析Android中init進(jìn)程實(shí)現(xiàn)的C語言源碼

    深入剖析Android中init進(jìn)程實(shí)現(xiàn)的C語言源碼

    這篇文章主要介紹了Android中init進(jìn)程實(shí)現(xiàn)的C語言源碼,init屬性服務(wù)在安卓中屬于系統(tǒng)的底層Linux服務(wù),需要的朋友可以參考下
    2015-07-07

最新評(píng)論