c語言靜態數組
❶ c語言里有沒有把數組元素全部賦值為0的函數
方法一、在定義時賦初值
1、靜態數組
int[3][3]={0};
2、動態數組
int**a=newint*[n];
for(inti=0;i<n;i++)
a[i]=newint[m](0);
方法二、在定義完後賦值
for(inti=0;i<n;i++)
{
for(intj=0;j<m;j++)
a[i][j]=0;
}
方法三、用一個循環吧數組所有元素設置為0:
intarr[100];
inti=0;
for(i=0;i<100;i++)
arr[i]=0;//ThiswillmakeallZERO
方法四、
1、全局變數和靜態變數初始化時會自動被設置為0。如果們聲明全局變數,那麼在運行前會變成全0。
intarr[1024];//Thisisglobal
intmain(void)
{
//statements
}
2、對於局部數組簡寫的初始化語法。如果一個數組被部分初始化,沒有被初始化的元素會被自動設置為相應類型的0。這是編譯器自動完成的。可以這樣寫:
intmain(void)
{
intarr[1024]={0};//ThiswillmakeallZERO
//statements
}
3、可以用memset函數在程序開始時初始化數組。這條命令這在已經修改了數組之後又想將它重置為全0特別有用。
intarr[1024];
arr[5]=67;
memset(ZEROARRAY,0,1024);//ThiswillreinitializealltoZERO
❷ C語言靜態數組
靜態數組(例如static)沒有初始化,其元素的值都為0
動態數組(例如auto)沒有初始化,其元素的值都為隨機值
❸ C語言如何創建數組
動態數組:void creat(linklist &L)
{
int x;
L=new Lnode;
linklist p,u;
p=L;
cout<<"請輸入一些有序的整數,以負數結束:"<<endl;
cout<<"請輸入一個整數:"<<endl;
cin>>x;
while(x>0)
{u=new Lnode;
u->data=x;
p->next=u;
p=p->next;
cin>>x;
}
p->next=NULL;
} 靜態數組:int iArray[10]={1,1,2,3,5,8,13,21,34,55); //初始化
void main()
{
//...
}
❹ c語言靜態存儲數組的賦值問題。
靜態數組和動態數組都可以初始化,只不過動態數組在定義時如果沒有初始化,數組元素的值是隨機值,而靜態數組在定義時如果未初始化,編譯器會自動把數組元素置0。
比如int a[10] 數組元素的值不確定是隨機值,可能是-8997777666之類。
static int a[10] 數組所有元素的值為0。
❺ c語言中數組的大小可以改變嗎
數組大小一旦確定就不能改變。
數組長度必須在編譯時確定,可以使用malloc函數在程序運行時動態分配所需「數組」長度。定義數組需要指定數組的長度,然後系統會根據這個長度分配固定的內存大小。
當出現intarray[10];這種情況的時候,是不可以變的,這時候變數的存儲空間在棧區。當intn;cin>>n;intarray=newint[n];的時候,數組可以根據n輸入的大小去分配內存,這時候數組存在堆區。
(5)c語言靜態數組擴展閱讀
長度為0的數組在標准C和C++中是不允許的,如果使用長度為0的數組,編譯時會產生錯誤,提示數組長度不能為0。但在GNUC中,這種用法卻是合法的。
它的最典型的用法就是位於數組中的最後一項,這樣做主要是為了方便內存緩沖區的管理。如果長度為0的數組換為指針,那麼在分配內存時,需採用兩步:
1、需為結構體分配一塊內存空間;
2、再為結構體中的成員變數分配內存空間。這樣兩次分配的內存是不連續的,需要分別對其進行管理。當使用長度為0的數組時,則是採用一次分配的原則,一次性將所需的內存全部分配給它。相反,釋放時也是一樣的。