山口屋~活動日誌~

私生活で主な出来事をピックアップ

多次元配列 宣言 メモリ C言語 C++

2010-12-13 23:27:15 | ソフトウェア開発
C言語などで、多次元配列を利用する場合、
(1)要素数を含めて宣言する
(2)ポインタとして宣言して動的にメモリを確保する
二つのやり方があります。

(2)のやり方自体が二通りあります。
(A)ポインタを格納する配列を用意し、最後に値を格納する一次元配列を用意する。
(B)一次元配列で表現する。データアクセスの記述が面倒。
ここでは(A)のやり方をとるものとします。

これらは関数におけるデータの受け渡しで違いが現れます。
(1)では関数の引数としてなら、最初の一つを除いた[]に要素数を記述しておけば、直接的に多次元配列を受け渡しすることができる。
(2)では関数の引数や戻り値として、直接的に多次元配列を受け渡しすることはできない。

これらはデータ構造の違いに起因します。例として二次元配列Array[M][N]を取り上げます。
(1)の場合、値が入ったメモリがM×N個用意されます。
(2)の場合、ポインタが入ったメモリがM個、値が入ったメモリがM×N個用意されます。

関数の戻り値として何とか配列を扱いたい場合は、(2)のやり方なら、先頭のアドレスを指すポインタを戻り値としてやれば、意図したことが実現できる。

メモリ C言語 C++ C++/CLI C#

2010-12-07 23:01:40 | ソフトウェア開発
メモリはヒープ、データ・セグメント、コード・セグメント、スタックという四つの部分にエリア分けされている。

ローカル変数、auto変数はスタックに配置される。スタック領域は、関数が呼び出された時点で確保され、関数の処理が終わると自動的に解放される。

グローバル変数、static変数はデータ・セグメント(静的記憶領域)に配置される。この領域に確保された変数の寿命はプログラム終了までである。

C言語のmalloc関数、C++やC++/CLI、C#のnew演算子などで動的に確保するメモリ領域はヒープに作成される。C言語、C++の場合、それぞれmalloc関数、delete演算子で確保したメモリは解放しなければならない。C++のnew演算子については、newヘッダファイルを読み込んでplacement newという特別なnew演算子を利用することができるようである。

スタックの特徴として、下から積んだデータは上からしか取り崩さない、言わば積み上げられた本や書類、ハノイの塔のような形態を取ることである。メモリの確保・解放はヒープより高速であるが、上限がヒープより小さいらしい。

C99から追加されたC言語、C++の可変長配列はヒープ・スタックどちらなのかよくわからない。

<参考URL>

ITPro連載「よくわかるC言語(第4回・第9回)」
碧色工房-blue studio-「C Programming(第15回)」
金丸隆志「非情報系学生のための C/C++ 入門」講義資料第11回-02:new 演算子によるメモリの動的確保
Programming Place Plus「C++編(言語解説) 第36章 placement new」
C++マニアック,変数,local,global,variable,メモリ,memory,構築,消滅,construction,destruction,C++入門,C++講座
C言語講座:関数や変数のメモリ配置
電算職人のメモ置き場「.NET Frameworkはなぜ遅いといわれるのか #3」

電気学会 論文 Word

2010-12-05 16:24:01 | パソコン
電気学会論文誌への投稿手引 目次の「付録1 論文,資料の作成見本」に準拠するようにWord文書を作成したい。大会・研究会・行事 原稿の書き方の「研究会原稿 Word テンプレート」では以下のような工夫がされている。

<フォントサイズが本文と異なる見出し>

[段落]ダイアログボックス→[間隔]グループの[段落前]、[段落後]、[行間]の[間隔]、これらの値の合計が、[ページ設定]ダイアログボックス→[文字数と行数]タブ→[行数]グループの[行送り]の値の整数倍になるようにする。

<文字グリッドの間隔>

[ページ設定]ダイアログボックス→[文字数と行数]タブ→[グリッド線]ボタン→[グリッド線]ダイアログボックス→[グリッド線の設定]グループの[文字グリッドの間隔]を1.01字にする。(1字にすると1行で56字となるので、本文26字+余白3字+本文26字=55字に合うようにしている。)

<図表はテキストボックス内>

図表はタイトル、説明も含めてテキストボックスとして挿入される。

Microsoft Word 図 2007

2010-12-05 16:21:44 | パソコン
Micorosoft Word 2003 には[Microsoft Word 図]というオブジェクトがあって利用していた。しかし Micorosoft Word 2007 には無い。描画キャンバスが代わりのようだ。

<Word 2007 で描画キャンバスを挿入>
[挿入]タブ→[図]グループの[図形]コマンド→[新しい描画キャンバス]で挿入される

また、Micorosoft Word 2003 では、オートシェイプ描画時に自動的に描画キャンバスが挿入された。しかし Micorosoft Word 2007 では挿入されない。複数のオブジェクトを選択する際には、描画キャンバスに入っていたほうが都合が良いこともあるらしく、自動挿入の設定をしたほうがいい場合もあるようだ。

<Word 2007 でオーシェイプ挿入時、描画キャンバスを自動挿入>
[Office]ボタン→[Wordのオプション]→[Wordのオプション]ダイアログボックスが開く→[詳細設定]タブ→[編集オプション]グループの[オートシェイプの挿入時、自動的に新しい描画キャンバスを作成する]チェックボックスをオン→[OK]ボタン

参考URL
All About ビジネス「ワードの描画キャンバスが挿入されないようにする」

Microsoft Word 図 選択 複数

2010-12-05 14:04:48 | パソコン
Microsoft Word で編集中に図だけを複数選択したい。Word 2007 は Word 2003 よりも不便かも。

Word 2007
[ホーム]タブ→[編集]グループの[選択]コマンド→[オブジェクトの選択]ボタン
方法1:1つ目をクリック、2つ目以降を[Shift]キーを押しながらクリック
方法2:図をドラッグして囲んで選択

Word 2003
[図形描画]ツールバー→[複数オブジェクトの選択]ボタン(※)→[複数オブジェクトの選択]ダイアログボックスが開く→[すべて選択]ボタン→[OK]ボタン
※表示されていないときは[図形描画]ツールバー→[▼]ボタン(1番右)をクリック→[ボタンの表示/非表示]→[図形描画]→[複数オブジェクトの選択]にチェックを入れる。

参考URL
よねさんのWordとExcelの小部屋「Word2007(ワード2007)基本講座:図形の使い方(1/3)」
教えて!Helpdesk「Word: 文書内全てのオブジェクトを選択するには?」