1. c語言定義一個整型二維數組,若沒有賦值,系統自動給的是0嗎
C語言規定,普通數組沒有賦初值,默認的數組元素值是隨機數,不是0。
如果在定義數組時,數據類型前面加上關鍵字static,數組變成了靜態數組;或者把數組定義在函數的外面,成為全局變數數組,這時數組元素的值自動賦值為0。
2. C語言 \0是在字元串後自動添加的嗎
是自動添加的,但這是要佔地方的。
如果你不指定字元數組的長度,那系統會自動保留位置,現在你指明數組長度是2,那就沒有地方存放\0了。
3. C語言將數組a中除'\0'之外的值復制到同類型數組b中,數組b末尾會自動加上'\0'
是的,當你把值復制到b數組後完成結束後,程序檢測到b已經賦值完畢,會自動的往b數組後面添加/0
4. 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
5. 在C語言的數組里,如果初使化為字元串則結尾自動加0,如果是先定義一
在C語言中,數組的下標從0開始,這里將幾種排序都寫一下,都是固定的函數,用的話直接粘貼就好了。//插入排序void insertion(int a[],int n){int i,j;for(i=1;i0&&a[j-1]>tmp;j--)a[j]=a[j-1];a[j]=tmp;}}//冒泡排序void bubble(int a[],int n){int i,j;for(i=0;ia[j])swap(&a[j-1],&a[j]);}}//冒泡排序改良版void bubble(int data[],int n){int k=n-1;while(k>=0){int i,j;for(i=1,j=-1;idata[i]){j=i-1;swap(&data[i],&data[j]);}k=j;}}//用於結構體的排序void bubble(student data[],int n){int k=n-1;while(k>=0){int i,j;for(i=1,j=-1;idata[i].height){j=i-1;swap(&data[i],&data[j]);}k=j;}}//選擇排序void selection(int a[],int n){int i,j;for(i=0;i
6. c語言中一維數組為什麼一定要對長度定義,不能自動補0而二維數組就可以沒有行數長度,自動補0呢
首先要明確數組的在計算機的分配方式。
計算機會分配一塊《連續》的內存給數組來使用,這樣就可以通過《下標》很方便的訪問數組的元素。因此數組的長度就一定是要固定的,因為內存是一直在動態的分配和釋放的,如果數組的長度不固定,那麼數組後面的內存到底還要不要分配給別人。如果分配了,數組忽然要增加,那數組內存就不能是連續的了。
所有定義數組時可以省略的欄位都是因為可以確定長度,才可以省略。不是說一維數組不能省略長度,當對數組中所有元素都初始化的時候是可以省略的。
比如int a[] = {1,2,3,4,5},這么一定可以省略長度,因為數組長度固定是5了。
而二維數組,當不初始化數組中的任何一個元素時,行列都需要制定,這樣才能確定數組的大小。當初始化了其中的元素時,約定製定列數,就可以通過初始化的元素個數,算出最小的行數。
但是行列都不制定就不可以了,比如我初始化了6個元素,即可以是a[2][3]也可以是a[3][2]也可以是a[1][6],會發生歧義,是不允許的。所以二維數組的初始化必須制定一個,至於只必須制定行還是必須制定列,再C語言定義的時候大家預定俗成了制定列,所以就延續下來了。
7. c語言中將一維數組放入二維數組中會自動補零嗎
你是怎麼把一維數組放到二維數組的,memcpy?
不會自動補零的,使用二維數組前先memset或者初始化a[x][y] = {0};
8. 關於C語言字元數組的賦值最後自動添加『\0』問題
c[5]只有5個空間無法完全容納字元串"hello",因為這個字元串需要佔用6個字元位置。
所謂自動加'\0'的問題是:你寫在雙引號中的,編譯程序會認為是字元串,會自動為你添加上一個字元串結尾符號0,而不是運行時添加的。
如果你用debug方式運行程序,調試環境自動會把你開設的char a[5];進行初始化0的工作,這時你再將第1位初始化時,後面的0仍存在就好象字元串結尾已經存在了。如果非debug運行則沒有這個初始化工作。
如果你用字元方式初始化應當寫:char c[6]={ 'h','e','l','l','o','\0' };
9. c語言程序中 當聲明int b[0][0]的時候為什麼還可以自動加值
聲明b[0][0],會給他分配一個指向棧空間的指針,給不存在的下標添加值,就是在b[0][0]指針所指的位置偏移一定距離後,修改該處的值,會導致棧中的數據被修改,是非常危險的行為,會造成程序異常,甚至產生軟體安全問題。
10. C語言,主動給字元數組添加\0跟系統自動添加有什麼區別
不等價!
使用字元串賦值時,才會有 結束符