C語言不定長數(shù)組及初始化方法
C語言不支持不定長數(shù)組,要么malloc,要么在動態(tài)的指定它的長度
動態(tài)數(shù)組不能初始化,可使用memset
1.int* p = (int*)malloc(num);
2.int num = 5;
arr[num];
若使用arr[],則需要在后面對齊進行初始化,來指定長度,否則編譯可以通過,但是默認只有一個單元,超過一個單元的長度,在后面程序的運行中有可能會被沖掉
int arr[] = {0};//定義了一個單元的數(shù)組,并不是不定長數(shù)組
最好不用使用arr[] = {0}來定義數(shù)組,定義數(shù)組之前應要指定長度
int arr[256] = {0};
int a[256]={0};并不是把a的所有元素初始化為0,int a[256]={1};也不是把a所有的元素初始化為1.
數(shù)組可以用一個列值來初始化,例如
int v1[] ={1,2,3,4}; char v2[]={'a','b','c',0};
當數(shù)組定義時沒有指定大小,當初始化采用列表初始化了,那么數(shù)組的大小由初始化時列表元素個數(shù)決定。所以v1和v2分別為 int[4] 和char[4]類型。如果明確指定了數(shù)組大小,當在初始化時指定的元素個數(shù)超過這個大小就會產生錯誤。例如:
char v3[2] ={'a','b',0}; //錯誤:太多的初始化值了 char v3[3] ={'a','b',0}; //正確
如果初始化時指定的的元素個數(shù)比數(shù)組大小少,剩下的元素都回被初始化為 0。
例如
int v5[8]={1,2,3,4};
等價于
int v5[8]={1,2,3,4,0,0,0,0};
注意沒有如下形式的數(shù)組賦值:
void f() { v4={'c','d',0}; //錯誤:不是數(shù)組賦值 }
顧名思義,集合(aggregate)就是多個事物聚集在一起,這個定義包括混合類型的集合:像struct和class等,數(shù)組就是單一類型的集合。
初始化集合往往既冗長又容易出錯,而C++中集合初始化(aggregate initialization)卻變得很方便而且很安全。當產生一個集合對象時,要做的只是指定初始值就行了,然后初始化工作就由編譯器去承擔了。這種指定可以用幾種不同的風格,它取決于正在處理的集合類型。但不管是哪種情況,指定的初值都要用大括號括起來。
比如一個內部類型的數(shù)組可以這樣定義:
int a[5] = { 1, 2, 3, 4, 5 };
如果給出的初始化值多于數(shù)組元素的個數(shù),編譯器就會給出一條出錯信息。但如果給的初始化少于數(shù)據(jù)元素的個數(shù),那將會怎么樣呢?
例如:
int b[6] = {0};
這時,編譯器會把第一個初始化值賦給數(shù)組的第一個元素,然后用0賦給其余的元素。注意,如果定義了一個數(shù)組而沒有給出一列初始值時,編譯器并不會去做初始化工作。所以上面的表達式是將一個數(shù)組初始化為零的簡潔方法。
以上這篇C語言不定長數(shù)組及初始化方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
上一篇:Qt學習教程之表格控件螞蟻線詳解
欄 目:C語言
本文標題:C語言不定長數(shù)組及初始化方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/729.html
您可能感興趣的文章
- 04-02c語言函數(shù)調用后清空內存 c語言調用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求階乘


閱讀排行
本欄相關
- 04-02c語言函數(shù)調用后清空內存 c語言調用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求
隨機閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載