NULLポインタとNULL

する#include <stdio.hの> 
追加(int型、int型B)INT { 
    戻りA + B; 
} 
ボイドMAIN1(){ 
    //トリロジー関数ポインタの定義
   intは追加(INT A、INT B ); // 最初のステップ:関数宣言
    のint(* P)(INT 、INT Bを); // 第二段階:優先*よりも大きい(Pの*)への関数名()
    //簡略INT(* P)(INT、 INT);関数ポインタの定義変数p、int型の戻り値の最初のアドレスを指し示すための機能、INT(*)(INT INT ) プラスpは名前へのポインタである
    //比較のint * pを(INT A、INT B);それはすなわち、関数ポインタ型の戻り値宣言型関数ポインタ宣言された関数の定義ではありません。
    P =追加; //第三段階:初期化され、第1のアドレスポインタを表す関数の関数名
    INT RES = P(1,3); // ステップ4:間接的関数ポインタを呼び出す
    のprintf( "%Dを\ n" 、RESを); 
    //この関数は、コードは、p ++無意味、コードが変更され、ある
    void *型PADD =追加;ポインタ変数PADDが//ないPADD(1,3)を呼び出すことで、タイプとパラメータのリストを定義するときに指定した関数は戻りません。
    //関数ポインタを定義し、関数のパラメータリストや戻り値の型が不可欠
}

////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////////// 
ボイドMAIN2(){ 
    // INT * P = 0x56777、直接ポインタ変量に割り当てられたアドレスに、pポインタを解決するために応じてどのような種類を知っていないアドレス0x56777に格納され、それが合法的ではありません
    *パイント=(int型*)int型 0x56777; // int型にキャスト0x56777アドレス*、 PINTは、intの分析データに基づいて0x56777開始アドレスから知っていた

    ; int型NUM = 10 
    ダブルD = 10.4; 
    int型* P1 =#
    ダブル* P2 =&D; 
    void *型PVOID = P1; 
    PVOID = P2; //無効ポインタ主アドレス渡す
   //のprintf(「%Dを\ n 、」* PVOID); //空隙のみP2およびP2格納されたポインタアドレスが記憶装置のタイプではない、それは、彼*値を用いて除去することができない
    のprintf(「%F \ N」、*((ダブル* )PVOID)); //空のポインタ単にアドレスP2を格納し、ダブル*型にキャスト、(ダブル*)PVOID、解決ダブルで知っ 
    場合はnull //ポインタパラメータまたは戻り値は、明示的なポインタ型なしで、配信アドレス
    ヌル//ポインタすべきですデータ型、キャストの必要性について

    // NULLポインタまたはポインタは、ときにのみ使用するように、キャストする必要はありませんデータアドレスのいずれかのタイプを指すことができ
    、@はアドレスなしにNULLポイントで、決定するための主な条件
    intは* pInt1 = NULLを、/ /ヌルポインタのポインティング
    (pInt1 == NULL){IF 
        のprintf( "任意のアドレスせずpInt1点"); 
    } 
} 

/////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////// 
の#include <memory.h> //使用のmemset関数
ボイドmain3(){ 
    char型STR [30] = "中国グレートは"; 
    。int型NUMの[5] = {1、 } 2,3,4,5; 
    のmemset(STR、 '' ,. 5); // void *型__cdeclのmemset(_Dstボイド*、int型_val、size_tの_size);ここから渡されたSTRアドレスDstのNULLポインタ次の5バイトのバイトは、「」文字に割り当てられている 
    のprintf( "%S \ N-"、STR); //はAAAAAでありますすばらしいです
    のmemset(NUM、0,20); // DstのNUMアドレスNULLポインタの最初に、ここ以降から20のバイトが文字に割り当てられています0は、それがアレイ全体クリアする
    ために(INT i = 0; iは <5。++ I){
        printf( "%のD、" NUM [I]); // 0,0,0,0,0、
    } 
} 


////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////// 
する#include <STDLIB.H> 
ボイドメイン(){ 
    //定義ポインタ型情報三含ま
    // 1、第2のアドレスを、ステップ(INTフロート二重)、3は、コンテンツ(%のDは、%F)を解釈する方法
    //のmalloc(×100 1024×1024)に割り当てられているブラケット100Mバイトの
    ボイド* PVOID; 
    PVOID =のmalloc(20です); // 20ワードを割り当てメモリ部は、このメモリアドレスは、最初のスペースを節約PVOID 
    最初のアドレス、同じ手順で、2つの方法でメモリの20バイトの次の分析データとして// 
    応じて%dの解析@ 
    * INTにパイント=(int型*)PVOIDとして; 
    のための(INT I = 0;私は<5; Iは++){ 
        にPINT [I]など= I。
        printf( "%d個、%F ||"、PINT [i]は、PINT [I])。//0,0.000000 || || 1,0.000000 2,0.000000 || || 3,0.000000 4,0.000000 || 
    } 
    のprintf( "\ nをする\ n"); 
    //按照%F解析、
    void *型pVoidF =のmalloc(20); 
    フロート* pFloat =(フロート*)pVoidF。
    printf( "%d個の\ n個の\ n"、はsizeof(フロート*))。
    {(; iが5 <++ iが0 = INT)のため
        pFloat [I] = iは、

        printf( "%のDは、%F、%D ||"、pFloat [i]は、pFloat [I]、* pFloat)。//0,0.000000,0 || || 0,0.000000,1072693248 0,0.000000,1073741824 || || 0,0.000000,1074266112 0,0.000000,1074790400 || 没有搞懂
    } 

}

 

おすすめ

転載: www.cnblogs.com/luoxuw/p/11313411.html
おすすめ