忍者ブログ
今は、就職活動日記
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

インクリメントの演算には
後置演算と前置演算がある

高知演算はa++

x=a++;
だとxにはaがまず代入されその後にaが+1される。
PR
void* memcpy(void* s1, const void* s2, size_t n);

第一引数:コピー先のアドレス
第二引数:コピー元のアドレス
第三引数:コピーするデータの大きさをバイト単位で指定

【戻り値】
第一引数がそのまま戻り値となる.

【どこで役に立つ?】
どんなタイプのデータでも,まるまるコピーを作ることが可能である.
例えば構造体で,実データやポインタが一緒になってデータとして並んでいても,まるごとコピーを作成することが可能である.


【補足】
仲間 strcpy:文字列限定 \0が登場するまでコピーする
今,グローバル変数0運動を行なっています.

さて,構造体のコピーは,=演算子で簡単にできる.
配列などでは不可能だが,構造体ではこれが許されるのである.

しかし,構造体がメンバでポインタを持っていると,
ポインタの参照先がコピーされてしまい,データそのものを
書き換えてしまうということが起こりうる.

これを回避するためには,メンバごとのコピーを行なう必要がある.
さらに,配列をもったメンバに対して,malloc関数を使って領域を割り当ててやる必要が
ある.
こうすれば,ポインタが指す先は新たに確保された領域となり,
生のデータが書き換えられることはなくなる.
C言語について参考になりそうなサイト

「スタックアスタリスク」
C言語のみならず,様々な言語や
IT系の求職情報も載っているサイト
http://www.stackasterisk.jp/


「初心者のためのポイント学習C言語」
http://www9.plala.or.jp/sgwr-t/index.html

「私のオモチャ箱」
C言語によるグラフィックスのことも載っている.
アルゴリズムについての解説も豊富
http://www005.upp.so-net.ne.jp/h-masuda/index.html

「SG」
C言語とは何か などものっている
http://www.sgnet.co.jp/c/index.htm

「つくる人の味方」
C言語の診断テストなど.
http://mikata.curiocube.com/index.php

「プログラミング演習1」
10.デバッグの欄が役に立つ.warningは無視していけない!など.
http://www.ics.kagoshima-u.ac.jp/edu/proen1c/index.html

「苦しんで覚えるC言語」
色々基本的なことから全部のっている。
http://homepage3.nifty.com/mmgames/c_guide/index.html
C言語ではメモリ管理が通常,静的メモリ確保か,自動メモリ確保で行なわれる.
しかし,これらのやりかたは,コンパイル時に確保するメモリの大きさが決まってしまう.
外部からファイルを読み込んで,データの大きさだけメモリを確保したい場合は,mallocを使う.

□□□□□malloc
#include <stdlib.h>
void free(void *ptr);
□□□□□□
ヒープ領域
malloc用の領域。

mallocで確保したメモリオブジェクトは,
freeするまで絶対に開放されないので,これら二つは対になるように配置する.

【戻り値】
確保された領域のポインタを返す.

【何に役立つか?】
動的にメモリ領域を確保したいときに役に立つ.

ちなみに
C++ではmallocは使用してはならない。
かわりにnew delete演算子を使用する.

関連:
フラグメンテーション
- HOME -
Powered by  [PR]
 | 忍者ブログ