Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でのメモリ操作とは何ですか?


ライブラリ#includeには、基本的なメモリ操作が含まれています。厳密には文字列関数ではありませんが、関数は#includeでプロトタイプ化されています。

これらのメモリ操作は次のとおりです-

void * memchr(void * s、int c、size_t n); バッファ内の文字を検索します。
int memcmp(void * s1、void * s2、size_t n); 2つのバッファを比較します。
void * memcpy(void * dest、void * src、size_t n); あるバッファを別のバッファにコピーします。
void * memmove(void * dest、void * src、size_t n); あるバッファから別のバッファにバイト数を移動します。
void * memset(void * s、int c、size_t n); バッファのすべてのバイトを特定の文字に設定します。

いずれの場合も、メモリのバイトにコピーされることに注意してください。 sizeof()関数が再び役立ちます。

memcpy(dest、src、SIZE); コピー文字(バイト)
memcpy(idest、isrc、SIZE * sizeof(int)); intの配列をコピーする


memmove() behaves in exactly the same way as memcpy() except, that the source and destination locations may overlap.


memcmp() is similar to strcmp() except here, unsigned bytes are compared and returns less than zero if si is less than s2 etc.

たとえば、

char src[SIZE], dest[SIZE];
int isrc[SIZE], idest[SIZE];

  1. 異なるポインター操作とC言語のポインターの問題は何ですか?

    ポインタは、値が別の変数のアドレス、つまりメモリ位置の直接アドレスである変数です。他の変数や定数と同様に、変数アドレスを格納するために使用する前に、ポインターを宣言する必要があります。 次のステートメントを検討してください- int qty = 179; メモリ内の変数の表現は次のとおりです- 次のようにポインタを宣言できます- Int *p; これは、「p」が別の整数変数のアドレスを保持するポインタ変数であることを意味します。 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 例- int qty = 175; int *p; p= &qty;

  2. C言語でのシフト演算とは何ですか?

    問題 C言語を使用して、数値の左シフト、右シフト、および補数を表示する簡単なプログラムは何ですか? 解決策 左シフト 変数の値が1回左シフトされると、その値は2倍になります。 たとえば、a =10、次にa <<1 =20 右シフト 変数の値を1回右シフトすると、その値は元の値の半分になります。 1 =5 例 以下はシフト操作のCプログラムです- #include<stdio.h> main (){    int a=9;    printf("Rightshift of a = %d\n",a&