c語言數組遍歷
A. c語言 指針數組的遍歷拜託各位大神
前面說的: NULL 不要加引號 . str[i] 是一個指針 不會是 NULL , 除非str[i]指向的內存位置的地址是 NUll 或者你事先將 數組str[]中的每一個無素都初使化為 NULL ; 因為你 傳入函數的參數 是一個指針數組 你可以顯式的把 str[] 的長度作為參數傳遞到你的函數裡面去 . void str(char *str1[],char *str2[],char findstr[],char returnstr[] ,int str1_len ) { int i; for(i=0; i < len ; ++i) { if(strcmp(str1[i],findstr)==0) { strcpy(returnstr,str2[i]); } } }
B. C語言遍歷數組
因為數組是從0開始算起的
所以a[2][3]數起來是
第0行和第1行
第0列,第1列,第2列
i表示的是行,當初始化i=0時表示的是第0行,當i++之後,i=1時表示的是第1行,已經表示完數組的行數了,當i=2時已經數組越界了~所以i〈2這里和〈=1效果是一樣的
同理
可解釋j
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;
}
D. C語言中for循環對數組遍歷,那麼數組被訪問了幾次
3次,num[0],num[1],num[2]
E. 怎麼利用c語言的循環語句遍歷一個二維數組
是指上這個問題可以用一個while循環完成,這個在游戲編程渲染頂點時也經常使用。方法如下:
define M 10;
define N 2;
int i = 0;
int a[M][N];
while(i < M*N)
{
a[i/N][i%N] = 0;
}
希望能幫到你。
F. C語言中遍歷是什麼意思
遍歷 就是把所有的元素都過一遍
比如 遍歷數組 就是從第一個元素 到最後一個元素
遍歷鏈表 就是從第一個節點 到最後一個節點。
G. C語言用指針解遍歷數組
指針解遍歷數組例題:
#include <stdio.h>
int main(){
int arr[] = { 99, 15, 100, 888, 252 };
int i, *p = arr, len = sizeof(arr) / sizeof(int);
for(i=0; i<len; i++){
printf("%d ", *(p+i) );}
printf(" ");
return 0;
}
H. c語言中一個五維數組,如果要遍歷其中的每一個元素,應該使用幾層循環嵌套合適
幾維就用幾層,比如一維數組,就用一個for就能完成。二維用兩個for就能遍歷,以此類推。最內層的for對應著數組名最右側那個維度。
I. c語言這個遍歷數組是什麼原理
這個數組實際上是一個結構體數組。程序用了指針指向數組中的元素,也就是代表某一個結構體。
起始條件ps=stus,指針指向數組首地址,也是第一個結構體對應的地址,因此ps->name代表了stus[0].name,之後幾個同理,printf就是輸出了這個結構體的全部內容,然後ps++就是指向了數組的下一個元素,即下一個結構體,最終邊界是ps<stus+len,也就是最終指向stus[len-1],就是數組最後一個元素,完成遍歷
J. C語言中,對二維數組所有元素遍歷一次,有幾種循環方式為什麼
1、行優先和列優先
有三種循環方式:FOR循環、DO-WHILE循環 、WHILE循環,字元串之間的比較,它有專門的字元串比較函數:strcmp函數。
2、不能用運算關系符
(10)c語言數組遍歷擴展閱讀:
二維數組A[m][n],這是一個m行,n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t
按「列優先順序」存儲時,地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t
存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組。