日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言数组知识点总结

發布時間:2024/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言数组知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言數組

定義

  • 數組是用來存儲一系列相同類型數據的集合

靜態數組

  • 靜態數組內存分配是連續的(即地址連續),最低的地址對應首元素,最高的地址對應末尾元素。在棧內存上分配了固定大小,在運行時這個大小不能改變。在函數執行完以后,系統自動銷毀;
int a[5] = {1,2,3,4,5}; 或 int a[] = {1,2,3,4,5};//定義時地址分配完畢,數組長度固定
  • 定義一個靜態數組實例
# include <stdio.h> int main(void) {int a[5] = {1, 2, 3, 4, 5};int i;for (i = 0; i < 5; i++ ){printf("%d\n", a[i]);}return 0; }

動態數組

  • 動態數組的內存空間是從堆(heap)上分配(即動態分配)的,當程序執行到分配內存語句時,才為其分配存儲空間。運行結束后,程序員需要free自行銷毀釋放分配的空間。
  • 定義一個動態數組實例
#include <stdio.h> #include <stdlib.h> //使用malloc函數需要調用此頭文件int main() {int Len; //數組長度int *array; //數組指針int i; //數組下標//獲取數組長度printf("請輸入數組長度:");scanf("%d", &Len);//動態分配內存空間,如果失敗就退出程序array = (int*)malloc( Len * sizeof(int) );if(array == null){printf("內存分配失敗!\n");exit(0); }//向數組占用的內存寫入數據for(i = 0; i < Len; i++ ){array[i] = i + 1;}// 遍歷數組for(i = 0; i < Len; i++){printf("%d ", array[i]);}printf("\n");free(array); //釋放資源return 0; }

一維數組

一維數組的聲明

類型名 數組名[常量表達式];

例如:

int a[5]; // 注意為常量表達式 不能是變量

以上就是定義的一個長度為5的整型數組,方括號中的常量表達式為數組的元素個數(即數組長度),a為數組名,同時代表的數組的首元素地址。

一維數組的初始化

  • 完全初始化:定義時給所有元素賦值

    int a[5] = {1, 2, 3, 4, 5};
  • 不完全初始化:定義時只給部分的元素賦值

    int a[5] = {1,2}

    這種方法只給部分的元素賦值,未賦初值的系統會為默認為其賦初值為0。

    注意:定義數組一定要為其賦初值,不能a[5] = {};,只有一個大括號,系統會隨機為其賦垃圾值,會導致程序出現不必要的錯誤。

    大括號中最少要寫一個數。比如:int a[5]={0};此時系統默認全部賦0值

  • 如果定義數組時就給數組中所有元素賦初值,那么就可以不指定數組的長度,因為此時元素的個數已經確定了。

    int a[] = {1,2,3,4,5}; // 不能直接定義 int a[] = {};而不給其賦初值

    以上形式自動會根據括號內元素生成長度,省去了我們自己去計算數組長度可能導致錯誤的情況。

訪問數組元素

  • 數組元素可以通過數組名稱加索引進行訪問。元素的索引放在方括號內。
int a[5] = {1,2,3,4,5}; printf ( "%d\n" , a[3]); // 輸出的結果為4
  • 注意:數組中第一個索引值為 0;長度為n的數組,最后一個元素的索引值為n - 1,若輸入a[n]則會報 “數組越界錯誤”
  • 也可以用指針訪問數組,例:
#include <stdio.h>int main() {int a[5], i;printf("輸入元素: ");//循環輸入數據for(i = 0; i < 5; ++i)scanf("%d", a + i); //數組名代表首元素地址//遍歷數組printf("數組元素為: \n");for(i = 0; i < 5; ++i)printf("%d ", *(a + i));printf("\n");return 0; }

二維數組

  • 相當于一個一維數組的列表,聲明一個 x 行 y 列的二維整型數組,如int a[2][3];相當于兩個長度為3的一維數組;理解上可以將其視為x行y列的矩陣,但其內存是連續的。

二維數組的聲明

類型名 數組名 [ x ][ y ]; //x表示行標,y表示l列標
  • 同樣的 a為數組名,同時代表的數組的首元素地址

二維數組的初始化

// 二維數組可以通過在括號內為每行指定值來進行初始化 a[2][3] = {{1,2,3} , {4,5,6}}; //也可以去掉括號,等價 a[2][3] = {1,2,3,4,5,6};

二維數組的訪問

  • 二維數組中的元素可以通過使用下標索引(行索引和列索引)來訪問
#include <stdio.h>int main() {int a[2][3] = {1,2,3,4,5,6};printf("%d",a[1][2]); //輸出結果為6return 0; }
  • 也可以通過指針訪問
#include <stdio.h>int main() {int a[2][3] = { { 1, 2, 3} , {4, 5, 6,} };int (*p)[3] = a; //定義數組指針執行數組int i, j;p = a;//遍歷數組for (i = 0; i < 2; i++ ){for ( j = 0; j < 3; j++ ) printf("%d " , *(*(p+i)+j));}printf ("\n");return 0; }

多維數組

對于多維數組其實就是維度的推廣,用法基本上差不多,學習了指針后,對于多維數組的運用可以應用指針來解決。

有錯誤歡迎指正,謝謝~

總結

以上是生活随笔為你收集整理的C语言数组知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。