成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C語言之數(shù)組-創(chuàng)新互聯(lián)

數(shù)組

在數(shù)組這章 我們需要明確學習知識點如下:

站在用戶的角度思考問題,與客戶深入溝通,找到鄒平網(wǎng)站設計與鄒平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋鄒平地區(qū)。
  1. 一維數(shù)組的創(chuàng)建和初始化
  2. 一維數(shù)組的使用
  3. 一維數(shù)組在內(nèi)存中的存儲
  4. 二維數(shù)組的創(chuàng)建和初始化
  5. 二維數(shù)組的使用
  6. 二維數(shù)組在內(nèi)存中的存儲
  7. 數(shù)組越界
  8. 數(shù)組作為函數(shù)參數(shù)
數(shù)組的創(chuàng)建

首先要知道 數(shù)組是一組相同類型元素的集合,那該怎么創(chuàng)建呢?創(chuàng)建的方式為:type_t arr_name [const_n]//type_t代表這組數(shù)據(jù)的類型;arr_name代表數(shù)組名,最重要一點 const_n 是一個常量表達式 表示 數(shù)組的大小
例如:

int arr1[10];
// 下面這個數(shù)組能正常創(chuàng)建嗎
int count = 10;
int arr2[count];

我們可以用不同的編譯器試試
下面是在vs編譯器下的執(zhí)行結(jié)果:
在這里插入圖片描述
我的電腦最近重裝系統(tǒng)了 虛擬機沒裝,但是變數(shù)組 在gcc編譯器下是支持的,我們只要知道創(chuàng)建數(shù)組在C99標準之前 只支持常量,C99標準修改了這一概念,但是 數(shù)組大小雖然可以用變量指定,但是肯定是不能初始化的,在以后做題過程中如果遇到類似的報錯,知道問題出在哪里就可以。

數(shù)組初始化

對于數(shù)組 初始化,我總結(jié)的重點 就是 需要了解,不完全初始化,已經(jīng)初始化元素內(nèi)容,我們可以用幾個例子來清晰它

int arr1[10] = {1,2,3 };
	int arr2[] = {1,2,3,4 };
	int arr3[5] = {1,2,3,4,5 };


	char arr4[3] = {'a',34,'c' };
	char arr5[] = {'a','v','c' };
	char  arr6[] = "abcdef";

我們可以通過內(nèi)存查看,初始化的過程是什么樣
在這里插入圖片描述
可以看到arr1數(shù)組在雖然在內(nèi)存中開辟了是個元素,每個元素類型為整形,但是只是初始化了三個元素 剩下的七個元素被默認初始化為0。
在這里插入圖片描述
對比arr2和arr3,我們可以看到 初始化給定元素個數(shù)限制和不給定元素個數(shù)的區(qū)別,我們即使不寫個數(shù),但是給定相應元素,系統(tǒng)會默認元素個數(shù)的。
在這里插入圖片描述
對比arr4 和arr5 我們會發(fā)現(xiàn),當我們指定數(shù)組類型后,我們即使寫了數(shù)字,也會被系統(tǒng)默認成ASCII碼對應的字符。
在這里插入圖片描述

對比arr5和arr6 我們會發(fā)現(xiàn),arr5初始化,我們定義字符的時候 系統(tǒng)不會默認加上結(jié)束\0標識符,但是初始化字符串的時候 系統(tǒng)會默認在末尾加入結(jié)束標識符 \0。

一維數(shù)組的使用

其實一維數(shù)組的使用 就是我們之前了解的操作符[],下標引用操作符,他其實就是數(shù)組訪問操作符,看一下代碼就一目了然

#includeint main()
{int arr[10] = {0};//數(shù)組的不完全初始化
  //計算數(shù)組的元素個數(shù)
  int sz = sizeof(arr)/sizeof(arr[0]);
//對數(shù)組內(nèi)容賦值,數(shù)組是使用下標來訪問的,下標從0開始。所以:
int i = 0;//做下標
for(i=0; i<10; i++)//這里寫10,好不好?
{arr[i] = i;
}
//輸出數(shù)組的內(nèi)容
for(i=0; i<10; ++i)
{printf("%d ", arr[i]);
}
return 0;
}

這里需要注意的是
1、數(shù)組是使用下標來訪問的,下標是從0開始的。
2、 sizeof是操作符,他不是函數(shù),是用來計算操作數(shù)的大小,單位是字節(jié)。
3、當數(shù)組名作為sizeof的操作數(shù)時候,計算的是整個數(shù)組的大小,字節(jié)為單位哦。
補充:1. sizeof(數(shù)組名),計算整個數(shù)組的大小,sizeof內(nèi)部單獨放一個數(shù)組名,數(shù)組名表示整個數(shù)
組。
2. &數(shù)組名,取出的是數(shù)組的地址。&數(shù)組名,數(shù)組名表示整個數(shù)組。
除此1,2兩種情況之外,所有的數(shù)組名都表示數(shù)組首元素的地址。

一維數(shù)組在內(nèi)存中的存儲

我們都知道 對于變量的 存儲我們是在內(nèi)存中取個地址存儲,如:&a,數(shù)組訪問元素的時候是arr[i],那同樣的我們在內(nèi)存中存儲就應該是&arr[i],例程如下:

#includeint main()
{int arr[10] = {0};
int i = 0;
  int sz = sizeof(arr)/sizeof(arr[0]);
 
for(i=0; iprintf("&arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}

我們看看內(nèi)存中的情況:我們可以看到 也是占用四個字節(jié),而且數(shù)組在內(nèi)存中是連續(xù)存放的。
在這里插入圖片描述

二維數(shù)組的創(chuàng)建和初始化

先給二維定個性,二維名字上來說 是行列,兩個維度,其實在內(nèi)存上存儲還是一維的,這點 我們可以待會用查看地址的方式進行論證。

二維數(shù)組的創(chuàng)建
//數(shù)組創(chuàng)建
int arr[3][4];
char arr[3][5];
double arr[2][4];
二維數(shù)組初始化
//數(shù)組初始化
int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{4,5}};
int arr[][4] = {{2,3},{4,5}};//二維數(shù)組如果有初始化,行可以省略,列不能省略
二維數(shù)組的使用
#includeint main()
{int arr[3][4] = {0};
int i = 0;
for(i=0; i<3; i++)
{int j = 0;
for(j=0; j<4; j++)
{arr[i][j] = i*4+j;
}
}
for(i=0; i<3; i++)
{int j = 0;
for(j=0; j<4; j++)
{printf("%d ", arr[i][j]);
}
}
return 0;
}
二維數(shù)組在內(nèi)存中的存儲
#includeint main()
{int arr[3][4];
int i = 0;
for(i=0; i<3; i++)
{int j = 0;
for(j=0; j<4; j++)
{printf("&arr[%d][%d] = %p\n", i, j,&arr[i][j]);
}
}
return 0;
}

我們可以看看二維數(shù)組的內(nèi)存存儲:
在這里插入圖片描述
我們可以將二維數(shù)組看成是一維數(shù)組的數(shù)組,則arr[0] 可看成是數(shù)組名,數(shù)組名可看成是首元素地址,我們可以通過代碼來解釋,遞增時,地址前進的步長;代碼如下:

#includeint main()
{int arr[10] = {1,2,3,4,5};
printf("%p\n", arr);
  printf("%p\n", &arr[0]);
  printf("%p\n", &arr[0] + 1);
  printf("%d\n", *arr);
   printf("%d\n", &arr + 1);
  //輸出結(jié)果
  return 0;
}

分析結(jié)果如下 數(shù)組地址加一 占用四十個字節(jié),首元素地址加一 占用四個字節(jié)
在這里插入圖片描述

進一步驗證為什么二維數(shù)組列不能省略,如果省略了 那就不知道步長了,無法確定 下一組元素地址啦。
在這里插入圖片描述

數(shù)組越界

數(shù)組的下標是有范圍限制的。
數(shù)組的下規(guī)定是從0開始的,如果數(shù)組有n個元素,最后一個元素的下標就是n-1。
所以數(shù)組的下標如果小于0,或者大于n-1,就是數(shù)組越界訪問了,超出了數(shù)組合法空間的訪問。
C語言本身是不做數(shù)組下標的越界檢查,編譯器也不一定報錯,但是編譯器不報錯,并不意味著程序就
是正確的,
所以程序員寫代碼時,最好自己做越界的檢查
例如:在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章題目:C語言之數(shù)組-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article32/gpisc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、微信公眾號網(wǎng)站內(nèi)鏈、建站公司、微信小程序網(wǎng)頁設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
嘉定区| 洪洞县| 大方县| 米脂县| 安远县| 涪陵区| 资兴市| 乐亭县| 安康市| 蓝山县| 西吉县| 勐海县| 杭州市| 喀喇| 安乡县| 北安市| 东乡| 阳西县| 新竹县| 池州市| 沈丘县| 特克斯县| 沙洋县| 阆中市| 秦安县| 闽侯县| 辉县市| 汨罗市| 都昌县| 南丹县| 重庆市| 铜梁县| 汕头市| 绍兴市| 襄汾县| 建水县| 昭觉县| 金溪县| 灌云县| 北川| 韩城市|