Cに関するhat_0024_enaのブックマーク (59)

  • 図解:constとポインタと参照 - Qiita

    記事は「ポインタ/参照とconstキーワードについて、なんとなく分かってきたかも?」という学習ステージの方が、const修飾の役割を イメージできる ような理解を目指しています。 図解(凡例) int val = 123; // 普通の変数 int* ptr = &val; // ポインタ(pointer) int& ref = val; // 参照(reference) const int cval = 45; // 定数(constant) 記事では、上記C++ソースコードに対応する図示を次のルールで行います。"白色の箱"が普通の変数(cval)やポインタ型変数(ptr)を、"赤色の箱"が定数(cval)を、"黄色タグ"が参照型変数(ref)をそれぞれ表します。箱の中身は、各変数が保持している値に対応します。ポインタ型変数は"差し先変数のアドレス値"を保持しますが、分かりやすさのた

    図解:constとポインタと参照 - Qiita
  • C++マニアック,const の使い方,usage of const,C++入門,C++言語講座

    キーワード const は、C++ の変数(オブジェクト)が定数であることを示すものです。「オブジェクトの内容を変更できない」というアクセス制御を行うときに使うわけです。簡単ですが、ポインタと絡むと const を書く位置によって意味が変わるので、このあたり、まとめておきましょう。後半では、クラスと共に使用する場合についても解説します。 最も簡単な場合 ポインタが絡む場合 クラスの const なメンバ変数(定数のメンバ変数) const なクラスオブジェクトを使う場合 const 関連 最も簡単な場合 ページの先頭へ const を使う、最も簡単な場合とは、例えば、変更しない整数の定数を定義するような場合でしょう。次の例を見てください。変数 iL1、iL2 は、定数となり、値を変更できません。 int main() { // int 型変数と const int iL0 = 200;

  • マルチバイト文字列とワイド文字列 - mkubara.com

    概要 VisualStudio2005になって、今まで書いていた文字列処理関係のコードに対してコンパイルエラーや警告が表示されるようになった方も多いと思います。VisualStudio2005では使用する文字コードが変更となり、従来のマルチバイト文字列(日ではShift-JIS)から、世界標準のワイド文字列(Unicode, UTF-16)へ移ったためです。 このように文字コードはプログラムにおいて重要な位置を占めるものですが、その実態や移行の手法は意外と情報の少ないものでした。今回はこの辺りを記述します。 マルチバイト文字列とワイド文字列 char型とwchar_t型 日Windows上で現在我々の利用する文字コードであるShift-JISは、主に英字を1バイト、日語文字を2バイトで表現するため、マルチバイト文字列と呼ばれます。マルチバイト文字列は1文字が何バイトかを文字ごとに計

  • 文字コード - haseham | パブー

    hat_0024_ena
    hat_0024_ena 2016/07/03
     マルチバイト ワイド文字の図がわかりやすい
  • const に値が代入できるのはなぜですか?

    C言語におけるconstキーワードの働きについて、複数の話題が混在しているようですから、順番に解説してみます。 const修飾には「定数値」と「読み取り専用」という2つの側面があります。両者はよく似ていますが、明確に異なる意味をもっています。前者は"値/データそれ自身"に対する修飾であり、後者が"式の評価結果"に対する修飾となることに注意してください。 初期値をともなう変数定義でconst修飾を用いた場合、「定数値」の定義となります。例:const int x = 5; とすると、名前 x は定数値 5 となります。 ポインタが指す先の型(詳細後述)でconst修飾を用いた場合、「読み取り専用」宣言になります。例:int y = 10; const int *p = &y; とすると、式 *p の評価結果は const int 型つまり「読み取り専用」となります。 「定数値」では、実行時に

    const に値が代入できるのはなぜですか?
    hat_0024_ena
    hat_0024_ena 2016/06/25
    * の左側 const は"ポインタ先のデータ"が、* の右側 const は"ポインタ変数"が不変になる
  • メモリマップドファイルとワーキングセット - NyaRuRuが地球にいたころ

    メモリマップドファイルも "Working Set" を消費します.試しに 256MB のファイルをメモリ空間にマッピングしてみましょう. まずはファイルの作成からです.@IT で紹介されている『巨大なサイズのファイルを簡単に作る方法』で 256MB のファイルを作成しました. fsutil file createnew image.bin 268435456 では,このファイルにデータを書き込みながら仮想メモリの使用状況を見ていきましょう. int main() { Sleep( 1000 * 3 ); const DWORD numByte = 1024 * 1024 * 256; HANDLE file = CreateFileW( L"image.bin", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRI

    メモリマップドファイルとワーキングセット - NyaRuRuが地球にいたころ
    hat_0024_ena
    hat_0024_ena 2015/03/28
    workingSet=プロセスが利用している物理メモリのサイズ virtualSize=多分仮想メモリ
  • 記憶クラス

    第12章 記憶クラス 第11章でユーザ関数についての説明をしましたので、今度は関数間での変数の扱いについて説明したいと思います。 いわゆる「記憶クラス」というものなのですが、初心者にとってはわかりづらいものかもしれません。 このホームページでは分割コンパイルは扱わない予定になっておりますので、初心者がユーザ関数を同一ファイルで扱うときに必要となる記憶クラスのみを説明することにします。 12-1.有効範囲 「有効範囲」とはその変数を参照できる範囲のことです。 C言語では、変数の宣言をソースプログラムのどこに書くかによって「ローカル変数」と「グローバル変数」に分けられ、この有効範囲が異なってきます。 この有効範囲は「記憶クラス」と密接な関係がありますので、まずは有効範囲から理解してください。 (1)ローカル変数(局所変数) 関数内で定義され、その関数内でのみ使用できます。 複数の関数が同一の変

    hat_0024_ena
    hat_0024_ena 2015/03/28
    ヒープ=mallocなど動的用、スタック=ローカル変数 関数の引数や戻り値、 静的=グローバル static
  • ハンドラ関数

    ウインドウを表示する一般的なWindowsアプリケーションは、 システムからの通知をウインドウプロシージャという関数で受信するという特徴があります。 たとえば、システムがシャットダウンされようとしているときはWM_QUERYENDSESSIONが送られ、 アプリケーションはこのタイミングでクリーンアップ処理を行うことができます。 こうした通知をコンソールを表示するアプリケーションからでも検出したい場合は、 SetConsoleCtrlHandlerを呼び出してハンドラ関数を追加することになります。 BOOL WINAPI SetConsoleCtrlHandler( PHANDLER_ROUTINE HandlerRoutine, BOOL Add ); HandlerRoutineは、ハンドラ関数のアドレスを指定します。 Addは、ハンドラ関数を追加する場合にTRUEを指定し、削除する場

    hat_0024_ena
    hat_0024_ena 2015/03/06
     コンソール自体が閉じられるとき、どうしようもないので×ボタンを無効にする
  • Why does closing a console that was started with AllocConsole cause my whole application to exit? Can I change this behavior?

    hat_0024_ena
    hat_0024_ena 2015/03/06
     コンソール自体が閉じられるとき、どうしようもないので×ボタンを無効にする
  • ポインタ再考

    hat_0024_ena
    hat_0024_ena 2015/02/28
     二次元配列を一次元のポインタ配列でアクセスする時の注意点
  • C言語講座>第6章 C言語のポインタ ~ & と * を使ってみる ~

    それでは、正しいポインタ型変数の宣言の仕方を説明します。 型名 *変数名; 例: int  *ptr; ポインタは、英語で「ある場所を指し示す人や物」という意味です。 つまり、ポインタ型の変数を宣言するということは、「0012FF7C」だとか、 「0064FDF4」という住所を指し示す値を入れる箱を用意することを意味するのです。 最後にもう一つだけプログラムを作ってください。 &をつけると、変数から変数の住所が求まります。 では、反対に変数の住所から変数の値が求まってもいい気がしませんか? 変数の住所から、変数の値を求める方法は次のようになります。 -- リスト16``-- #include <stdio.h> void main( ) { int  data; int *ptr; data = 5; printf("整数型の変数dataの値= %d\n", data); printf(

    hat_0024_ena
    hat_0024_ena 2015/02/27
     最後の表がわかりやすい
  • ダイアログスタイルが古い - OKWAVE

    OSが32bitとかってに仮定して・・・ 下の内容をコピーしてメモ帳に貼り付けて、XXX.manifest という名前で保存します。 (XXXは好みに合わせて変更してください) ここから <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Microsoft.Windows" type="win32" /> <description>TimeSeries</description> <dependency> <dependentAssembly>

    ダイアログスタイルが古い - OKWAVE
    hat_0024_ena
    hat_0024_ena 2012/11/27
    C#からC++で作成したdllを読み出すときは必要 書かないとC++側ではXPスタイルだが、C#側ではクラシックスタイルになる
  • Bitmapを重ね合わせる方法

    最近プログラミングを始めた初心者です。 環境はXP SP2 及びVC++6.0 です。 Win32APIのみを用いてプログラミングしております(MFCは使えません)。 宜しくお願い致します。 やりたいことは、あるビットマップを背景にして(bmpback.bmp)、その上に、bmpback.bmpよりサイズが小さいbmp1.bmpとbmp2.bmpを、WM_TIMERを使って交互に表示させる、です。 その際、WM_TIMER内でbmpback.bmpとbmp1.bmp(又はbmp2.bmp)を重ね合わせたbitmapを作成し、そのbitmapをWM_PAINT内でBitBltなどを用いてメモリDCからクライアント領域用のDCに転送して、ディスプレイに表示させたいと考えています。 検索したところ、以下のリンクに正に同じ質問があったのですが、難しくて理解出来ませんでした。 http://oshi

    Bitmapを重ね合わせる方法
  • 透過DIB画像の表示: マルチメディアファイルフォーマット

    マルチメディアファイルの読み書きプログラミング(Visual C++ MFC)について学んだ結果を書き記しているものです。 透過DIB画像の表示には以下の2種類の方法があります。 マスク画像を用いる方法 まず画像の四隅の色から透過色を求めてマスク画像を作成し、このマスク画像で背景画像を理論積(AND)で切り取ります。次にマスク画像を反転してから前景画像上でマスクする部分を理論積(AND)で切り取り、最後にマスク部分を切り取った前景画像を理論和(OR)で背景画像に貼り付けます。 アルファブレンド32ビットDIBを用いる方法 まず背景画像から表示する画像の部分のコピーと表示する画像のコピーを作成します。次に背景画像と前景画像をアルファブレンド演算でピクセルビット毎に合成データを算出し、前景画像に戻します。最後に合成した前景画像を背景画像に貼り付けます。 ビットマップの指定位置のピクセル色を取り

  • PlgBltでの透過 - OKWAVE

    こんばんは。面白そうなので私も。 gに選択されているのがHBITMAPなら、HBITMAPを元に作成するのも楽なやり方の一つかもしれません。以下参考程度に。 HBITMAP CreateMaskBitmap(HBITMAP hBmpSrc/*元のグラフィック*/, COLORREF cMaskDesire/*透明にさせたい色を入れる*/) { BITMAP bmp; ::GetObject(hBmpSrc, sizeof(BITMAP), &bmp); HBITMAP hBmpMask = ::CreateBitmap(bmp.bmWidth, bmp.bmHeight, 1, 1, NULL); HDC hDCSrc = ::CreateCompatibleDC(NULL); HDC hDCMask = ::CreateCompatibleDC(NULL); HBITMAP hBmpSr

    PlgBltでの透過 - OKWAVE
    hat_0024_ena
    hat_0024_ena 2012/11/17
    この方法でマスクbitmapをつくりIPictureDispに変換 Office::_CommandBarButton->put_Maskで指定すれば透過できる
  • 他のプログラムのウインドウハンドルを取得する

    ○他のプログラムのウインドウを列挙-------------------------------------------------- #include <stdio.h> #include <windows.h> BOOL CALLBACK EnumWndProc( HWND hWnd, LPARAM lParam ) { char buff[256]=""; GetWindowText( hWnd,buff, sizeof(buff));//ウィンドウ名を取得 printf("%s\n",buff); return true; } int main(int argc, char* argv[]) { EnumWindows( EnumWndProc, (LPARAM)NULL ); return 0; } ○他のプログラムのウインドウサイズを変更--------------------

    hat_0024_ena
    hat_0024_ena 2012/11/13
    hwnd
  • Visual C++ のランタイムライブラリの設定

    ランタイムライブラリとは、プログラムを実行するために必要なライブラリである。 Visual Studio は複数のランタイムライブラリを提供している。 Visual C++ でアプリケーションを作成する際には、 利用するランタイムライブラリを指定する必要がある。 ランタイムライブラリの指定は、 構成プロパティ:C/C++:コード生成:ランタイムライブラリ で行う。 Visual Studio .NET 2003 で通常のアプリケーション用に提供される ランタイムライブラリは、以下の6種類がある。 マルチスレッド(/MT) マルチスレッド デバッグ(/MTd) マルチスレッド DLL(/MD) マルチスレッド デバッグ DLL(/MDd) シングルスレッド(/ML) シングルスレッド デバッグ(/MLd) ()内はコンパイラに与えるオプションである。 ただし、シングルスレッドは2005から廃

    hat_0024_ena
    hat_0024_ena 2012/11/12
    マルチスレッドDLL (/MTd) にすると、他のPCで依存するDLLも持ってこないとダメ
  • Visual Studio 2005 スタイルのドッキング ウィンドウを作成するには

    解説 Visual C++ 2008 Service Pack 1 には、Visual Studio 2005 スタイルのドッキング ウィンドウを簡単に作成することができる、CDockablePaneクラスが追加されました。 Visual C++ 2008 Service Pack 1 より追加された CDockablePane クラスを利用して、Visual Studio 2005 スタイルのドッキング ウィンドウを作成する方法をまとめます。 使用開発環境は Visual C++ 2008 Service Pack 1 です。 CDockablePane クラスを利用して、Visual Studio 2005 スタイルのドッキング ウィンドウを作成するための必要条件、最低すべきこと、は、 必要条件 ・開発環境が Visual C++ 2008 Service Pack 1 (以降)である

    hat_0024_ena
    hat_0024_ena 2012/09/18
    要VS2008 SP1
  • Loading...

  • Let's Boost

    Boost C++ Libraries の紹介サイトです。 :: by Google はじめに ご挨拶 Boost のインストール方法 参考リンク集 ニュース ◆ Version 1.42.0 と 1.41.0 対応 (2010/03/14) 新規ライブラリに関する Let's Boost のページ…: property_tree (汎用木構造型コンフィグ管理) / uuid (ユニークID生成器) ◆ RSS つけました (2009/08/28) ◆ Version 1.40.0 と 1.39.0 対応 (2009/08/28) 新規ライブラリに関する Let's Boost のページ…: Signals2 (Signal/Slotライブラリ改良版) ◆ Version 1.38.0 と 1.37.0 対応 (2009/02/22) 新規ライブラリに関する Let's Boost のペー