20160206.CCPPシステムの詳細(0016日)
37039 ワード
コードクリップ(01):针c+02.间接赋值c内容概要:メモリ
プログラムセグメント(02):01.Run.c内容概要:掛
プログラムセグメント(03):01.void.c+02.空のポインタc内容概要:Voidと空タイプポインタ
プログラムセグメント(04):01.針の声明c内容概要:ポインタの宣言
プログラムセグメント(05):01.银行c+02.ポインタ配列c内容概要:データアドレスマッピング
プログラムセグメント(06):01.入力ポインタc内容概要:アドレス入力
プログラムセグメント(07):01.Screen.c内容概要:画面出力画像
プログラムセグメント(08):test.c内容概要:Test 1
///01.
#include <stdio.h>
#include <stdlib.h>
//01. (&) :
// 1. : ( : | )
// 2. : ( )
// (1). (& ) CPU ;
// (2). , CPU ,
// ;
// 3. : CPU
// (1). CPU +
// (2).
// (3).
// CPU , ,
// (4). :
// 32 32 ;64 64
//02. :
// P , ,
//03. :
// Win32 4
// Win64 8
int main01(void)
{
int num = 10;
int data = 20;
//P , , ( )
int * pNum = #//0x12312312
int * pData = &data;
printf("%d
", sizeof(pNum));// 4 (Win3 )
printf("%p
", pNum);// (pNum) , (num)
printf("%p
", &pNum);// " " , int **
system("pause");
}
//04. :
// 1. :
// ,
// 2. :
//
// 3. :( * )
// :
//
// :
//
int main02(void)
{
int num1 = 1100;
int num2 = 1200;// num , ( )
int * pNum = &num1;//pNum1 int ,&num1 ( )
pNum = &num2;//pNum num2 ( | ) , 4 ,int * , 4
//int * pNum, , , : , ( )
*pNum = 12;// // ,
printf("%p
", &pNum);//&pNum pNum , CPU ,
printf("%d
", num2);
printf("num2 = %d
", num2);
system("pause");
}
//05. :
// VC: ,GCC
//06. :
// :signed/unsigned
// : /
//07. :
// Win32 :4 -->Win64 :8
int main03(void)
{
//int * p;// ,
//printf("%p
", p);// -->
// :
// signed/unsigned( 10 )+float ( )
int num1 = 10;
int num2 = 20;
//float * pNum;
//pNum = &num1;
//printf("%f", *pNum);// ( ) ( )
int * pNum;
pNum = &num1;
printf("%d
", *pNum);//
printf("%d
", sizeof(pNum));// Win32 4 , int
printf("%d
", sizeof(*pNum));// ,
system("pause");
}
//08. :
// *pNum<=>num
int main04(void)
{
int num = 20;
int data = 30;
int * pNum = #//int int
//&num = 1;// , &num CPU , C
//pNum = &data;
num = 3;
printf("%d,%d
", *pNum, num);//*pNum num
*pNum = 7;
printf("%d,%d
", *pNum, num);
system("pause");
}
///02. .c
#include <stdio.h>
#include <stdlib.h>
//01. :
// 1. ;
// !
// 1. ;
// !
void change05(int num)//
{
// , , , :
// , ,
// : ,
num = 3;
printf("change05 = %d
", num);
}
int main05(void)
{
int num = 10;
change05(num);
printf("%d
", num);
system("pause");
}
void change06(int * pNum)
{
*pNum = 3;
}
int main07(void)
{
int num = 10;
change06(&num);//&num--> --> --> -->C
printf("%d
", num);
system("pause");
}
プログラムセグメント(02):01.Run.c内容概要:掛
#include <stdio.h>
#include <stdlib.h>
//01.
// 1. DLL
// 2.
_declspec(dllexport) void go()
{
int * p = (int *)0xae0720;
*p = 77;
}
//02. :
// 1.
// 2.
_declspec(dllexport) void run()
{
typedef char * Char;
for (Char pStart = 0xae000000,pEnd = 0xae100000; pStart < pEnd; ++pStart)//
{
int * p = (int *)p;// , ,
if (77 == *p)
{
*p = 86;
}
}
}
プログラムセグメント(03):01.void.c+02.空のポインタc内容概要:Voidと空タイプポインタ
///01.void.c
#include <stdio.h>
#include <stdlib.h>
//01. :
// :void
// :void *
//02. :
// +
//03. :
//
int main01(void)
{
//error C2182:"a": "void" void
int num = 10;
double db = 19.3;
//void num;// --> --> , !
void * vp = #// ->Win (32/64) --> -->
vp = &db;// ( , , , , ...) ,
//printf("%d
", *vp);//:error C2100: ( )-> , ,
// , ( , )
//*vp = 10;
printf("%f
", *((double *)vp));// , ,
system("pause");
}
///02. .c
#include <stdio.h>
#include <stdlib.h>
//01. :
//
struct MyStruct// , ,
{//
int *p1;
int *p2;
int *p3;
int *p4;
};
//02. (NULL):
// :(void *)0
// :
// : ,
int main02(void)
{
//
double db = 10.9;
double = 10.9;
double * pDb = NULL;// (NULL):
while (NULL == pDb)
{
//
pDb = & ;
}
*pDb = 1;//
system("pause");
}
プログラムセグメント(04):01.針の声明c内容概要:ポインタの宣言
#include <stdio.h>
#include <stdlib.h>
//01. :
// + +
int main01(void)
{
int * p1;
int * p2;
system("pause");
}
//02. :
// : * p, num;
// :p ,num
int main02(void)
{
int numA, numB, numC;
double * pNumA, pNumB, pNumC;
printf("%d
", sizeof(pNumA));// Win32 , , 4
printf("%d
", sizeof(pNumB));
system("pause");
}
//03. ( ) :
// :
// :
#define int
typedef int INT;
int main03(void)
{
x = 3;//
INT y = 3;//
printf("%d, %d
", x, y);
system("pause");
}
//04. :
// :int * pNum
// :typedef int * pNum;
// :
#define double *
typedef double * DBP;
int main04(void)
{
p1;
DBP p2;
//printf("%p, %p
", p1, p2);
printf("%d, %d
", sizeof(p1), sizeof(p2));
system("pause");
}
//05. :
// 1. ( )
// 2.
int main05(void)
{
p1, p2;// :double *p1, p2, p3;//4,8
p1 = 0x123;
p2 = 0x123;
DBP p3, p4;//doube *
p3 = 0x123;
p4 = 0x123;
printf("%d, %d
", sizeof(p1), sizeof(p2));
printf("%d, %d
", sizeof(p3), sizeof(p4));
system("pause");
}
プログラムセグメント(05):01.银行c+02.ポインタ配列c内容概要:データアドレスマッピング
///01. .c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//01.C :
// ->
// ->
//02. :
// 1. ,
// 2. ,
// :
// 1.
// 2. ,
int main01(void)
{
int num1;//
int num2;
scanf("%d%d", &num1, &num2);//
int * p1 = &num1;//
int * p2 = &num2;
if (*p1 > *p2)// ,
{
//p1 = p1 ^p2;//
int * ptemp = p1;
p1 = p2;
p2 = ptemp;
}
printf("%d, %d
", *p1, *p2);
system("pause");
}
//03. const :
// :const , ("*")
// ,
// ,
// :const int * p<=>int const * p
// const ("*")
// :
//
//void accessControl(const int * p);
void accessControl(int const * p)// : , ,
{//const
p = NULL;// , ,
printf("*p = %d
", *p);// , ( )--> ,
//*p = 10;//
}
int main02(void)
{
int num = 100;
int * pNum = #
accessControl(pNum);
printf("num = %d
", num);
system("pause");
}
///02. .c
#include <stdio.h>
#include <stdlib.h>
//int a[8];
//const int *p[8];
int a[8] = { 1,8,2,7,3,6,4,5 };//int
const int * p[8] = { &a[0],&a[1],&a[2],a + 3,a + 4,a + 5,a + 6,a + 7 };//
void main()
{
printf(" :
");
for (int i = 0; i < 8; i++)
{
printf("%d
", a[i]);
}
printf(" :
");
for (int i = 0; i < 8; i++)
{
printf("%d
", *p[i]);
}
for (int i = 0; i < 8 - 1; i++)//
{
for (int j = 0; j < 8 - 1 - i; j++)// i
{
// , , ,
if (*p[j]>*p[j+1])// , ,
{//
int *ptemp = p[j];
p[j] = p[j + 1];
p[j + 1] = ptemp;
}
}
}
printf(" :
");
for (int i = 0; i < 8; i++)
{
printf("%d
", a[i]);
}
printf(" :
");
for (int i = 0; i < 8; i++)
{
printf("%d
", *p[i]);
}
system("pause");
}
プログラムセグメント(06):01.入力ポインタc内容概要:アドレス入力
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main01(void)
{
int num = 10;
int data = 20;
printf("%p, %p
", &num, &data);
int * pNum = &pNum;
// :
// :scanf("%p", &pNum);
// : 0x ,
scanf("%p", pNum);// %p +
*pNum = 20 + 3;// ,
printf("num = %d, data = %d
", num, data);
system("pause");
}
プログラムセグメント(07):01.Screen.c内容概要:画面出力画像
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int main(void)
{
int i = 0;
while (1)
{
HWND win = GetDesktopWindow();
HDC winDc = GetWindowDC(win);//
HDC memDc = CreateCompatibleDC(0);//
HBITMAP bitMap = (HBITMAP)LoadImage(win, TEXT("1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
SelectObject(memDc, bitMap);// -->
BitBlt(winDc, 0, 0, i++, i++, memDc, i++, i++, SRCCOPY);
Sleep(100);// 0.1
++i;
if (3 == i)// 3
{
i = 0;// 0
}
}
system("pause");
}
プログラムセグメント(08):test.c内容概要:Test 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define EN 1024
int flag = 0;
char * filePath = "E:\\Resource\\TestData\\BigDB\\Test.txt";
//
int intArr[EN];
void initArr(int intArr[EN])
{
//time_t te;
//unsigned int seed = (unsigned int)(time(&te));
//srand(seed);
srand((unsigned int)(time(NULL)));
for (int i = 0; i < EN; ++i)
{
intArr[i] = rand() % EN + 1;
}
}
//
void showArr(int intArr[EN])
{
for (int i = 0; i < EN; ++i)
{
printf("%4d
", intArr[i]);
}
}
//
void bubbleSortArr(int intArr[EN])
{
for (int i = 0; i < EN - 1; ++i)
{
for (int j = 0; j < EN - 1 - i; ++j)
{
if (intArr[j] > intArr[j + 1])
{
intArr[j] = intArr[j] ^ intArr[j + 1];
intArr[j + 1] = intArr[j] ^ intArr[j + 1];
intArr[j] = intArr[j] ^ intArr[j + 1];
}
}
}
}
//
void selectSortArr(int intArr[EN])
{
int minIndex = 0;
int minNum = 0;
for (int i = 0; i < EN - 1; ++i)
{
minIndex = i;
minNum = intArr[i];
for (int j = i + 1; j < EN; ++j)
{
if (minNum > intArr[j])
{
minIndex = j;
minNum = intArr[j];
}
}
if (i != minIndex)
{
intArr[i] = intArr[i] ^ intArr[minIndex];
intArr[minIndex] = intArr[i] ^ intArr[minIndex];
intArr[i] = intArr[i] ^ intArr[minIndex];
}
}
}
//
void insertSortArr(int intArr[EN])
{
int currentIndex = 0;
int currentValue = 0;
for (int i = 1; i < EN; ++i)
{
currentIndex = i;
currentValue = intArr[currentIndex];
while (0 < currentIndex && intArr[currentIndex - 1] > currentValue)
{
intArr[currentIndex] = intArr[currentIndex - 1];
--currentIndex;
}
intArr[currentIndex] = currentValue;
}
}
//
int binarySearch(int intArr[EN], int value)
{
int minIndex = 0;
int midIndex = 0;
int maxIndex = EN - 1;
while (minIndex <= maxIndex)
{
midIndex = (minIndex + maxIndex) / 2;
if (value == intArr[midIndex])
{
return midIndex;
}
else if (value < intArr[midIndex])
{
maxIndex = midIndex - 1;
}
else
{
minIndex = midIndex + 1;
}
}
return -1;
}
//
int lagrangeSearch(int intArr[EN], int value)
{
int minIndex = 0;
int ratioIndex = 0;
int maxIndex = EN - 1;
while (minIndex <= maxIndex)
{
//midIndex = minIndex + (maxIndex - minIndex) / 2;
ratioIndex = minIndex + (maxIndex - minIndex)*(value - intArr[minIndex]) / (intArr[maxIndex] - intArr[minIndex]);
if (value == intArr[ratioIndex])
{
return ratioIndex;
}
else if (value < intArr[ratioIndex])
{
maxIndex = ratioIndex - 1;
}
else
{
minIndex = ratioIndex + 1;
}
}
return -1;
}
int main01(void)
{
initArr(intArr);
showArr(intArr);
insertSortArr(intArr);
printf("binSearch Index = %d
", binarySearch(intArr, 880));
printf("lagrangeSearch index = %d
", lagrangeSearch(intArr, 880));
system("pause");
}