20160206.CCPPシステムの詳細(0016日)

37039 ワード

コードクリップ(01):针c+02.间接赋值c内容概要:メモリ
///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 = &num;//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 = &num;//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 = &num;//  ->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 = &num; 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"); }