C / C ++の基礎のインタビューの準備

1.送信値、及び基準アドレス転送によって渡さ

(1)値の転送

渡されたパラメータの値のみが、パラメータは、何も操作引数操作の機能ではありません、

関数の宣言:

ボイドスワップ(int型の PX、int型PY)
{ 
      int型 TMP = PX。
      PX = PY。
      PY = TMP;             
}
関数の呼び出し:
INT 、B; 
スワップ(B)

(2)アドレスを転送します

配信アドレスは、アドレス動作が伝達され、この関数は内部の引数を変更します。

関数の宣言:

ボイドスワップ(INT * PX、int型 *のPY)
{ 
      int型 TMP = * PX。
     * PX = * PY。
      * PY = TMP;             
}

関数の呼び出し:

int型、B; 
swap2( &、&B)。

(3)参照渡し

エイリアス変数が参照されているアドレス操作が送信され、この関数は内部の引数を変更します。

関数の宣言:

ボイドスワップ(int型の PX、int型PY)
{ 
      int型 TMP = PX。
      PX = PY。
      PY = TMP;             
}

関数の呼び出し:

int型、B; 
swap2(B)

2.ポインタと参照

リファレンスはエイリアスオブジェクトがnullにすることはできませんで、参照を定義するには、初期化する必要があります

リファレンスは、より安全な手を、変更することはできません

*差分3.constはint pとint型のconst * Pさん

(1)のconst int型* P

定数ポインタは、ポインタは、データが一定であることを示し、CONSTは左、分割境界*と呼ばれています。

* P定数、* pが左側値として動作することができない場合、

(2)にint * constのP

彼は、ポインタ自体が一定であることを示す、ポインタ定数と呼ば

pは定数です。

5地域のメモリで4.C

(1)スタック

変数の記憶領域を必要としない場合は、必要なときに割り当てられ、自動的にローカル変数や関数を格納し、クリア

(2)ヒープ

新しい割り当てられたメモリブロック、および対応する削除

(3)空き記憶領域

malloc関数は、メモリ領域を割り当てられ、そしてそれは、ヒープと非常によく似ています

(4)グローバル/静的変数記憶領域

グローバル変数と静的変数の格納領域

(5)定数記憶領域

一定のストレージ領域

ここでの焦点は、スタック及び空き記憶領域を区別新しいによってC ++で自由店舗あり、動的割り当てを削除し、ヒープは、C言語及びオペレーティングシステムの用語であるが、抽象オブジェクトを解放オペレーティングシステムがメモリの動的割り当てを維持します。

通常のメンバ変数で5.Cの++クラスの静的メンバ変数の違いは何ですか?静的な機能? 

(1)メンバ変数

静的メンバ変数は、どんなに多くのオブジェクトあなただけの変数が1つのアドレスだけを割り当てられている場合にのみ作成していません。
あなたがオブジェクトを作成し、変数の普通のメンバーは、コピーを持っています。

(2)関数

クラスオブジェクトに属していません。

オブジェクトを定義せずに呼び出すことができますが、唯一の静的メンバを呼び出すことができます。

静的メンバ関数は非静的クラスメンバーにアクセスすることはできません。

6. TCP UDP差

(1)接続されています

TCPコネクション、3ウェイハンドシェイク、

UDPラジオのための接続なし、

(2)セキュリティ

TCP信頼性の高いデータセキュリティ

UDPは信頼性が保証するものではありません。

(3)伝送効率

TCP伝送効率は比較的低いです。

より高い通信またはブロードキャスト通信と高速リアルタイム伝送のためのUDP高い伝送効率。

数(4)接続オブジェクト

TCPコネクションは、一から一を指すようにポイントすることができます。

1、多くの、および多対多の双方向コミュニケーションの1にUDPをサポート1。

 7. memcpy関数、memsetとを達成するために、コードは細切り

操作は、それが重要であり、バイトしています

(1)のmemcpy

ターゲット・メモリ(メモリ尖ったDESC)にコピーmemcpyのメモリリソース(メモリへのsrc点)

ボイド * Mem_copy(ボイド *のDST、CONST  ボイド *のSRC、int型N)
{ 
    場合(DST == NULL || SRC == NULL || N < 1 戻りNULL。
    CHAR *のDst =(CHAR * )DST。
    char * SRC =(CHAR * )SRC;
    一方、(N> 0 
    {
         * Dstの++ = *のSrc ++ 
        N - ; 
    } 
    戻りDST。
}

(2)のmemset

memsetの焦点である、それはより大きな構造又はアレイの動作をクリアする最速の方法である、バイト操作です。

ボイド * Mem_set(ボイド *のDST、INTヴァル、int型N)
{ 
    場合(DST == NULL || N < 1 戻りNULL。
    CHAR *のDst =(CHAR * )DST。
    一方、(N> 0 
    {
         * Dstの++ = ヴァル。
        N - ; 
    } 
    戻りDST。
}

継続するには。

おすすめ

転載: www.cnblogs.com/jxLuTech/p/11072765.html