真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

一組類型相同的數(shù)據(jù)【C數(shù)組】總結(jié)-創(chuàng)新互聯(lián)

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),呈貢企業(yè)網(wǎng)站建設(shè),呈貢品牌網(wǎng)站建設(shè),網(wǎng)站定制,呈貢網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,呈貢網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

作者 :? ?會(huì)敲代碼的Steve

?

墓志銘:博學(xué)篤志? 切問靜思

前言:本文旨在復(fù)習(xí)C語言數(shù)組章節(jié)的知識(shí)點(diǎn)、分為以下幾個(gè)部分:

  1. 什么是數(shù)組
  2. 一維數(shù)組、一維數(shù)組的初始化、一維數(shù)組的遍歷、冒泡排序。
  3. 二維數(shù)組、二維數(shù)組的創(chuàng)建和初始化、二維數(shù)組的使用
  4. 數(shù)組作為函數(shù)傳參時(shí)
  5. 數(shù)組越界
  6. C99標(biāo)準(zhǔn)的變長數(shù)組

正文:?

目錄

1.什么是數(shù)組?

2.一維數(shù)組初始化

2.1 一維數(shù)組遍歷

2.2 冒泡排序

2.3 代碼

3.二維數(shù)組

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

3.2 二維數(shù)組的遍歷

4.數(shù)組作為函數(shù)元素傳參

5.c99標(biāo)準(zhǔn)的變長數(shù)組


1.什么是數(shù)組?

?數(shù)組是一組相同數(shù)據(jù)的集合

2.一維數(shù)組初始化

前面我們學(xué)習(xí)了如何定義一個(gè)變量,其中變量是這么定義的 :

int a;  //int 數(shù)據(jù)類型  //變量名

那數(shù)組是如何定義的呢? 讓我們看下面的代碼

int arr[5]={0,1,2,3,4}; //int 數(shù)據(jù)類型 arr 數(shù)組名 //[5]代表里面有五個(gè)元素

所以這是一個(gè)包含有5個(gè)元素的int類型數(shù)組;? ?

數(shù)組的初始化:

數(shù)組的初始化是指,在創(chuàng)建數(shù)組的同時(shí)給數(shù)組的內(nèi)容一些合理初始值(初始化)

但是對(duì)于下面的代碼要區(qū)分,內(nèi)存中如何分配。?

char arr1[] = "abc";
char arr2[3] = {'a','b','c'};

對(duì)于數(shù)組的使用我們之前介紹了一個(gè)操作符: [] ,下標(biāo)引用操作符。它其實(shí)就數(shù)組訪問的操作符。 我們來看代碼:

# includeint main (void)
{
	int arr[5]={0,1,2,3,4};//數(shù)組的完全初始化
	
}

總結(jié):

  1. 1.數(shù)組是使用下標(biāo)來訪問的,下標(biāo)是從0開始。
  2. 2. 數(shù)組的大小可以通過計(jì)算得到。
int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);
2.1 一維數(shù)組遍歷

數(shù)組是可以通過下標(biāo)的方式來遍歷,上面已經(jīng)介紹過了數(shù)組的初始化,我們來嘗試一下寫寫代碼。

for(int i = 0;i<5;i++)
	{
		printf("%d ",arr[i]);//依次訪問0-4的所有數(shù)組元素
	}
	return 0;

于是這就是數(shù)組的一個(gè)簡(jiǎn)單的遍歷。?

補(bǔ)充:

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

#includeint main()
{
 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int i = 0;
    for(i=0; i<=10; i++)
   {
        printf("%d\n", arr[i]);//當(dāng)i等于10的時(shí)候,越界訪問了
   }
 return 0;
}

二維數(shù)組的行和列也可能存在越界。?

2.2 冒泡排序

冒泡排序(Bubble Sort)也是一種簡(jiǎn)單直觀的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢"浮"到數(shù)列的頂端。

作為最簡(jiǎn)單的排序算法之一,冒泡排序給我的感覺就像 Abandon 在單詞書里出現(xiàn)的感覺一樣,每次都在第一頁第一位,所以最熟悉。冒泡排序還有一種優(yōu)化算法,就是立一個(gè) flag,當(dāng)在一趟序列遍歷中元素沒有發(fā)生交換,則證明該序列已經(jīng)有序。但這種改進(jìn)對(duì)于提升性能來

說并沒有什么太大作用。

1. 算法步驟

比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。

對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。這步做完后,最后的元素會(huì)是大的數(shù)。

針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。

持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。

2. 動(dòng)圖演示

2.3 代碼
#includeint main() {
  int a, b, temp;
  int m[10];
  for (a = 0; a< 10; a++) {
    scanf("%d", &m[a]);
  }
  for (a = 0; a< 9; a++) {

    for (b = a + 1; b< 10; b++) {
      if (m[a] >m[a + 1]) {
        temp = a[m];
        a[m] = a[m + 1];
        a[m + 1] = temp;
      }
    }
  }
  for (a = 0; a< 10; a++) {
    printf("%d ", m[a]);
  }
  return 0;
}
3.二維數(shù)組

二維數(shù)組只是比一維數(shù)組多一個(gè)維度,可以理解為矩陣。

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

創(chuàng)建:

//數(shù)組創(chuàng)建
int arr[3][4];
char arr[3][5];
double arr[2][4];

初始化:

int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{4,5}};
int arr[][4] = {{2,3},{4,5}};//二維數(shù)組如果有初始化,行可以省略,列不能省略
3.2 二維數(shù)組的遍歷
define _CRT_SECURE_NO_WARNINGS
#include#include#include#include#includeint main(void)
{
	int arr[3][4] = {	{2, 7, 8, 5}, 
						{75, 8, 9, 8}, 
						{26, 37, 99, 9} };
	for (size_t i = 0; i< 3; i++)		//行
	{
		for (size_t j = 0; j< 4; j++)  //列
		{
			printf("%d ", arr[i][j]*2);
		}
		printf("\n");
	}
4.數(shù)組作為函數(shù)元素傳參

往往我們?cè)趯懘a的時(shí)候,會(huì)將數(shù)組作為參數(shù)傳個(gè)函數(shù),比如:我要實(shí)現(xiàn)一個(gè)冒泡排序(這里要講算法 思想)函數(shù) 將一個(gè)整形數(shù)組排序。

錯(cuò)誤的冒泡排序:

#includevoid sort(int arr[]);
int main()
{
   int i = 0;
  int rtr[10]={0};
  
   for(i = 0;i<10;i++)
   {
     scanf("%d",&rtr[i]);
   }
   sort(rtr);
   for(i = 0;i<10;i++)
   {
     printf("%d ",rtr[i]);
   }
  return 0;
}
void sort(int arr[])
{
	 int sz = sizeof(arr)/sizeof(arr[0]);
    int i,j = 0;
    for(i = 0;iarr[j+1])
        {
          int temp = arr[j];
          arr[j]=arr[j+1];
          temp = arr[j];
        }
      }
    }
}

難道數(shù)組作為函數(shù)參數(shù)的時(shí)候,不是把整個(gè)數(shù)組的傳遞過去?

正確的冒泡排序:?

#includevoid sort(int arr[],int sz);
int main()
{
   int i = 0;
  int rtr[10]={0};
   int sz = sizeof(rtr)/sizeof(rtr[0]);
   for(i = 0;iarr[j+1])
        {
          int temp = arr[j];
          arr[j]=arr[j+1];
          temp = arr[j];
        }
      }
    }
}

數(shù)組名是什么?

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

如果數(shù)組名是首元素地址,那么:

int arr[10] = {0};
printf("%d\n", sizeof(arr));

為什么輸出的結(jié)果是:40?

  1. 補(bǔ)充: 1. sizeof(數(shù)組名),計(jì)算整個(gè)數(shù)組的大小,sizeof內(nèi)部單獨(dú)放一個(gè)數(shù)組名,數(shù)組名表示整個(gè)數(shù) 組。
  2. &數(shù)組名,取出的是數(shù)組的地址。&數(shù)組名,數(shù)組名表示整個(gè)數(shù)組。 除此1,2兩種情況之外,所有的數(shù)組名都表示數(shù)組首元素的地址。?
5.c99標(biāo)準(zhǔn)的變長數(shù)組(補(bǔ)充)

這樣的代碼會(huì)報(bào)錯(cuò)嗎?

#includeint main()
{
    int n = 5;
   int arr[n];
}

答案是在C99標(biāo)準(zhǔn)下,并不會(huì);但如果在msvc里面則使用會(huì)提示你要使用變量而不是常量。這就是C99標(biāo)準(zhǔn)。?

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


網(wǎng)頁名稱:一組類型相同的數(shù)據(jù)【C數(shù)組】總結(jié)-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/cegjpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部