因?yàn)閿?shù)組是從0開始算起的
當(dāng)陽ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
所以a[2][3]數(shù)起來是
第0行和第1行
第0列,第1列,第2列
i表示的是行,當(dāng)初始化i=0時(shí)表示的是第0行,當(dāng)i++之后,i=1時(shí)表示的是第1行,已經(jīng)表示完數(shù)組的行數(shù)了,當(dāng)i=2時(shí)已經(jīng)數(shù)組越界了~所以i〈2這里和〈=1效果是一樣的
同理
可解釋j
//?Win32Project1.cpp?:?定義應(yīng)用程序的入口點(diǎn)。
//
#include?"stdafx.h"
#include?"Win32Project1.h"
#define?MAX_LOADSTRING?100
//?全局變量:?
HINSTANCE?hInst; //?當(dāng)前實(shí)例
TCHAR?szTitle[MAX_LOADSTRING]; //?標(biāo)題欄文本
TCHAR?szWindowClass[MAX_LOADSTRING]; //?主窗口類名
//?此代碼模塊中包含的函數(shù)的前向聲明:?
ATOM MyRegisterClass(HINSTANCE?hInstance);
BOOL InitInstance(HINSTANCE,?int);
LRESULT?CALLBACK WndProc(HWND,?UINT,?WPARAM,?LPARAM);
INT_PTR?CALLBACK About(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);
LoadString(hInstance,?IDC_WIN32PROJECT1,?szWindowClass,?MAX_LOADSTRING);
MyRegisterClass(hInstance);
//?執(zhí)行應(yīng)用程序初始化:?
if?(!InitInstance?(hInstance,?nCmdShow))
{
return?FALSE;
}
hAccelTable?=?LoadAccelerators(hInstance,?MAKEINTRESOURCE(IDC_WIN32PROJECT1));
//?主消息循環(huán):?
while?(GetMessage(msg,?NULL,?0,?0))
{
if?(!TranslateAccelerator(msg.hwnd,?hAccelTable,?msg))
{
TranslateMessage(msg);
DispatchMessage(msg);
}
}
return?(int)?msg.wParam;
}
//
//??函數(shù):??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.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));
return?RegisterClassEx(wcex);
}
//
//???函數(shù):??InitInstance(HINSTANCE,?int)
//
//???目的:??保存實(shí)例句柄并創(chuàng)建主窗口
//
//???注釋:?
//
//????????在此函數(shù)中,我們在全局變量中保存實(shí)例句柄并
//????????創(chuàng)建和顯示主程序窗口。
//
BOOL?InitInstance(HINSTANCE?hInstance,?int?nCmdShow)
{
HWND?hWnd;
hInst?=?hInstance;?//?將實(shí)例句柄存儲在全局變量中
hWnd?=?CreateWindow(szWindowClass,?szTitle,?WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,?0,?CW_USEDEFAULT,?0,?NULL,?NULL,?hInstance,?NULL);
if?(!hWnd)
{
return?FALSE;
}
ShowWindow(hWnd,?nCmdShow);
UpdateWindow(hWnd);
return?TRUE;
}
//
//??函數(shù):??WndProc(HWND,?UINT,?WPARAM,?LPARAM)
//
//??目的:????處理主窗口的消息。
//
//??WM_COMMAND -?處理應(yīng)用程序菜單
//??WM_PAINT -?繪制主窗口
//??WM_DESTROY -?發(fā)送退出消息并返回
//
//
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);
break;
default:
return?DefWindowProc(hWnd,?message,?wParam,?lParam);
}
break;
case?WM_PAINT:
hdc?=?BeginPaint(hWnd,?ps);
//?TODO:??在此添加任意繪圖代碼...
EndPaint(hWnd,?ps);
break;
case?WM_DESTROY:
PostQuitMessage(0);
break;
default:
return?DefWindowProc(hWnd,?message,?wParam,?lParam);
}
return?0;
}
//?“關(guān)于”框的消息處理程序。
INT_PTR?CALLBACK?About(HWND?hDlg,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch?(message)
{
case?WM_INITDIALOG:
return?(INT_PTR)TRUE;
case?WM_COMMAND:
if?(LOWORD(wParam)?==?IDOK?||?LOWORD(wParam)?==?IDCANCEL)
{
EndDialog(hDlg,?LOWORD(wParam));
return?(INT_PTR)TRUE;
}
break;
}
return?(INT_PTR)FALSE;
}
#includestdio.h
void print(int *p, int len)
{ int i = 0;
for(i = 0; i len; i++)
{ printf("%d ", *p); p++; }
}
int main()
{
int a[5], i;
for(i = 0; i 5; i++)
scanf("%d", a[i]);
print(a, 5);
}
//我暈,竟然不采納的。
#include?stdio.h
#include?conio.h
int?main?(void)?{
int?arr[20]?=?{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int?*p?=?arr;?/*?p指向數(shù)組首元素?*/
while?(p-arr?!=?20)?{?/*?遍歷數(shù)組,每元素值+1?*/
(*p)++;
printf?("%d\t",?*p);
p++;
}
putchar?('\n');
getch?();?/*?屏幕暫留?*/
return?0;
}
指針解遍歷數(shù)組例題:
#include stdio.h
int main(){
int arr[] = { 99, 15, 100, 888, 252 };
int i, *p = arr, len = sizeof(arr) / sizeof(int);
for(i=0; ilen; i++){
printf("%d ", *(p+i) );}
printf("\n");
return 0;
}
數(shù)組在內(nèi)存中只是數(shù)組元素的簡單排列,沒有開始和結(jié)束標(biāo)志,在求數(shù)組的長度時(shí)不能使用sizeof(p) / sizeof(int),因?yàn)?p 只是一個(gè)指向 int 類型的指針,編譯器并不知道它指向的到底是一個(gè)整數(shù)還是一系列整數(shù)(數(shù)組)。
所以 sizeof(p) 求得的是 p 這個(gè)指針變量本身所占用的字節(jié)數(shù),而不是整個(gè)數(shù)組占用的字節(jié)數(shù)。也就是說,根據(jù)數(shù)組指針不能逆推出整個(gè)數(shù)組元素的個(gè)數(shù),以及數(shù)組從哪里開始、到哪里結(jié)束等信息。
前面說的: NULL 不要加引號 . str[i] 是一個(gè)指針 不會是 NULL , 除非str[i]指向的內(nèi)存位置的地址是 NUll 或者你事先將 數(shù)組str[]中的每一個(gè)無素都初使化為 NULL ; 因?yàn)槟?傳入函數(shù)的參數(shù) 是一個(gè)指針數(shù)組 你可以顯式的把 str[] 的長度作為參數(shù)傳遞到你的函數(shù)里面去 . 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]); } } }