网站首页 > 文章中心 > 其它

c语言遍历数组元素的函数

作者:小编 更新时间:2023-10-08 08:01:46 浏览量:108人看过

C语言中,对二维数组所有元素遍历一次,有几种循环方式?为什么?

行优先和列优先

有三种循环方式:for循环,do-while循环

、while循环,

字符串之间的比较,它有专门的字符串比较函数:strcmp函数.

c语言遍历数组元素的函数-图1

C语言用指针解遍历数组?

指针解遍历数组例题:

#include stdio.h

int main(){

int i, *p = arr, len = sizeof(arr) / sizeof(int);

for(i=0; ilen; i++){

c语言遍历数组元素的函数-图2

printf("%d ", *(p+i) );}

printf("\n");

return 0;

}

数组在内存中只是数组元素的简单排列,没有开始和结束标志,在求数组的长度时不能使用sizeof(p) / sizeof(int),因为 p 只是一个指向 int 类型的指针,编译器并不知道它指向的到底是一个整数还是一系列整数(数组).

所以 sizeof(p) 求得的是 p 这个指针变量本身所占用的字节数,而不是整个数组占用的字节数.也就是说,根据数组指针不能逆推出整个数组元素的个数,以及数组从哪里开始、到哪里结束等信息.

C语言遍历数组

因为数组是从0开始算起的

第0行和第1行

同理

可解释j

C语言遍历结构体数组

//

#include?"stdafx.h"

#define?MAX_LOADSTRING?100

//?全局变量:?

HINSTANCE?hInst;//?当前实例

TCHAR?szTitle[MAX_LOADSTRING];//?标题栏文本

TCHAR?szWindowClass[MAX_LOADSTRING];//?主窗口类名

//?此代码模块中包含的函数的前向声明:?

ATOMMyRegisterClass(HINSTANCE?hInstance);

BOOLInitInstance(HINSTANCE,?int);

LRESULT?CALLBACKWndProc(HWND,?UINT,?WPARAM,?LPARAM);

INT_PTR?CALLBACKAbout(HWND,?UINT,?WPARAM,?LPARAM);

int?APIENTRY?_tWinMain(_In_?HINSTANCE?hInstance,

_In_opt_?HINSTANCE?hPrevInstance,

_In_?LPTSTR?lpCmdLine,

_In_?int??nCmdShow)

{

UNREFERENCED_PARAMETER(hPrevInstance);

UNREFERENCED_PARAMETER(lpCmdLine);

//?TODO:?在此放置代码.

MSG?msg;

HACCEL?hAccelTable;

//?初始化全局字符串

LoadString(hInstance,?IDS_APP_TITLE,?szTitle,?MAX_LOADSTRING);

MyRegisterClass(hInstance);

//?执行应用程序初始化:?

if?(!InitInstance?(hInstance,?nCmdShow))

return?FALSE;

//?主消息循环:?

while?(GetMessage(msg,?NULL,?0,?0))

if?(!TranslateAccelerator(msg.hwnd,?hAccelTable,?msg))

TranslateMessage(msg);

DispatchMessage(msg);

return?(int)?msg.wParam;

//?函数:?MyRegisterClass()

//?目的:?注册窗口类.

ATOM?MyRegisterClass(HINSTANCE?hInstance)

WNDCLASSEX?wcex;

wcex.cbSize?=?sizeof(WNDCLASSEX);

wcex.style=?CS_HREDRAW?|?CS_VREDRAW;

wcex.lpfnWndProc=?WndProc;

wcex.cbClsExtra=?0;

wcex.cbWndExtra=?0;

wcex.hInstance=?hInstance;

wcex.hCursor=?LoadCursor(NULL,?IDC_ARROW);

wcex.hbrBackground=?(HBRUSH)(COLOR_WINDOW+1);

wcex.lpszClassName=?szWindowClass;

wcex.hIconSm=?LoadIcon(wcex.hInstance,?MAKEINTRESOURCE(IDI_SMALL));

return?RegisterClassEx(wcex);

//?函数:?InitInstance(HINSTANCE,?int)

//?目的:?保存实例句柄并创建主窗口

//?注释:?

//??在此函数中,我们在全局变量中保存实例句柄并

//??创建和显示主程序窗口.

BOOL?InitInstance(HINSTANCE?hInstance,?int?nCmdShow)

HWND?hWnd;

hInst?=?hInstance;?//?将实例句柄存储在全局变量中

hWnd?=?CreateWindow(szWindowClass,?szTitle,?WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,?0,?CW_USEDEFAULT,?0,?NULL,?NULL,?hInstance,?NULL);

if?(!hWnd)

ShowWindow(hWnd,?nCmdShow);

UpdateWindow(hWnd);

return?TRUE;

//?函数:?WndProc(HWND,?UINT,?WPARAM,?LPARAM)

//?目的:?处理主窗口的消息.

//?WM_COMMAND-?处理应用程序菜单

//?WM_PAINT-?绘制主窗口

//?WM_DESTROY-?发送退出消息并返回

LRESULT?CALLBACK?WndProc(HWND?hWnd,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)

int?wmId,?wmEvent;

PAINTSTRUCT?ps;

HDC?hdc;

switch?(message)

case?WM_COMMAND:

wmId?=?LOWORD(wParam);

wmEvent?=?HIWORD(wParam);

//?分析菜单选择:?

switch?(wmId)

case?IDM_ABOUT:

DialogBox(hInst,?MAKEINTRESOURCE(IDD_ABOUTBOX),?hWnd,?About);

break;

case?IDM_EXIT:

DestroyWindow(hWnd);

default:

return?DefWindowProc(hWnd,?message,?wParam,?lParam);

case?WM_PAINT:

hdc?=?BeginPaint(hWnd,?ps);

//?TODO:?在此添加任意绘图代码...

EndPaint(hWnd,?ps);

case?WM_DESTROY:

PostQuitMessage(0);

return?0;

//?"关于"框的消息处理程序.

INT_PTR?CALLBACK?About(HWND?hDlg,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)

UNREFERENCED_PARAMETER(lParam);

case?WM_INITDIALOG:

return?(INT_PTR)TRUE;

if?(LOWORD(wParam)?==?IDOK?||?LOWORD(wParam)?==?IDCANCEL)

EndDialog(hDlg,?LOWORD(wParam));

return?(INT_PTR)FALSE;

以上就是土嘎嘎小编为大家整理的c语言遍历数组元素的函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章