C語言數組的遍歷
Ⅰ c語言中一個五維數組,如果要遍歷其中的每一個元素,應該使用幾層循環嵌套合適
幾維就用幾層,比如一維數組,就用一個for就能完成。二維用兩個for就能遍歷,以此類推。最內層的for對應著數組名最右側那個維度。
Ⅱ 數組遍歷常見的方式有
數組遍歷常見的方式有:
一、forEach方法
forEach是最簡單、最常用的數組遍歷方法,它提供一個回調函數,可用於處理數組的每一個元素,默認沒有返回值。
二、map方法
map,從字面上理解,是映射,即數組元素的映射。它提供一個回調函數,參數依次為處於當前循環的元素、該元素下標、數組本身,三者均可選。默認返回一個數組,這個新數組的每一個元素都是原數組元素執行了回調函數之後的返回值。
map方法不改變原數組。
三、filter方法
filter,過濾,即對數組元素的一個條件篩選。它提供一個回調函數,參數依次為處於當前循環的元素、該元素下標、數組本身,三者均可選。默認返回一個數組,原數組的元素執行了回調函數之後返回值若為true,則會將這個元素放入返回的數組中。
filter方法不改變原數組。
四、some、every方法
some方法和every的用法非常類似,提供一個回調函數,參數依次為處於當前循環的元素、該元素下標、數組本身,三者均可選。
數組的每一個元素都會執行回調函數,當返回值全部為true時,every方法會返回true,只要有一個為false,every方法返回false。當有一個為true時,some方法返回true,當全部為false時,every方法返回false。
some、every方法不改變原數組。
五、rece方法
rece方法有兩個參數,第一個參數是一個回調函數(必須),第二個參數是初始值(可選)。回調函數有四個參數,依次為本輪循環的累計值、當前循環的元素(必須),該元素的下標(可選),數組本身(可選)。
rece方法,會讓數組的每一個元素都執行一次回調函數,並將上一次循環時回調函數的返回值作為下一次循環的初始值,最後將這個結果返回。
如果沒有初始值,則rece會將數組的第一個元素作為循環開始的初始值,第二個元素開始執行回調函數。
最常用、最簡單的場景,是數組元素的累加、累乘。
rece方法不改變原數組。
六、for of方法
es6新增了interator介面的概念,目的是對於所有數據結構提供一種統一的訪問機制,這種訪問機制就是for of。
即:所有有interator介面的數據,都能用for of遍歷。常見的包括數組、類數組、Set、Map等都有interator介面。
(2)C語言數組的遍歷擴展閱讀:
數組(Array)是有序的元素序列。若將有限個類型相同的變數的集合命名,那麼這個名稱為數組名。組成數組的各個變數稱為數組的分量,也稱為數組的元素,有時也稱為下標變數。用於區分數組的各個元素的數字編號稱為下標。數組是在程序設計中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式。 這些有序排列的同類數據元素的集合稱為數組。
數組是用於儲存多個相同類型數據的集合。
在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指針數組、結構數組等各種類別。
Ⅲ C語言遍歷結構體數組
//Win32Project1.cpp:定義應用程序的入口點。
//
#include"stdafx.h"
#include"Win32Project1.h"
#defineMAX_LOADSTRING100
//全局變數:
HINSTANCEhInst; //當前實例
TCHARszTitle[MAX_LOADSTRING]; //標題欄文本
TCHARszWindowClass[MAX_LOADSTRING]; //主窗口類名
//此代碼模塊中包含的函數的前向聲明:
ATOM MyRegisterClass(HINSTANCEhInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULTCALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT_PTRCALLBACK About(HWND,UINT,WPARAM,LPARAM);
intAPIENTRY_tWinMain(_In_HINSTANCEhInstance,
_In_opt_HINSTANCEhPrevInstance,
_In_LPTSTRlpCmdLine,
_In_intnCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//TODO:在此放置代碼。
MSGmsg;
HACCELhAccelTable;
//初始化全局字元串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_WIN32PROJECT1,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//執行應用程序初始化:
if(!InitInstance(hInstance,nCmdShow))
{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_WIN32PROJECT1));
//主消息循環:
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(int)msg.wParam;
}//
//函數:MyRegisterClass()
//
//目的:注冊窗口類。
//
ATOMMyRegisterClass(HINSTANCEhInstance)
{
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_WIN32PROJECT1));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =MAKEINTRESOURCE(IDC_WIN32PROJECT1);
wcex.lpszClassName =szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
returnRegisterClassEx(&wcex);
}
//
//函數:InitInstance(HINSTANCE,int)
//
//目的:保存實例句柄並創建主窗口
//
//注釋:
//
//在此函數中,我們在全局變數中保存實例句柄並
//創建和顯示主程序窗口。
//
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
{
HWNDhWnd;
hInst=hInstance;//將實例句柄存儲在全局變數中
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
//
//函數:WndProc(HWND,UINT,WPARAM,LPARAM)
//
//目的:處理主窗口的消息。
//
//WM_COMMAND -處理應用程序菜單
//WM_PAINT -繪制主窗口
//WM_DESTROY -發送退出消息並返回
//
//
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
switch(message)
{
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//分析菜單選擇:
switch(wmId)
{
caseIDM_ABOUT:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
break;
caseIDM_EXIT:
DestroyWindow(hWnd);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//TODO:在此添加任意繪圖代碼...
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}
//「關於」框的消息處理程序。
INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
{
UNREFERENCED_PARAMETER(lParam);
switch(message)
{
caseWM_INITDIALOG:
return(INT_PTR)TRUE;
caseWM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg,LOWORD(wParam));
return(INT_PTR)TRUE;
}
break;
}
return(INT_PTR)FALSE;
}