タグ

C言語に関するWeintraubのブックマーク (109)

  • CMakeの使い方(その1) - Qiita

    はじめに 2月のはじめ頃、CMakeを使ってビルドを自動化しようと思い、色々ググってCMakeLists.txtを作り試行錯誤したのですが、その時は結局断念しました。というのも、abcというステップがあるとすると、ググッて得られる解説はabcのaやbが抜けていきなりcから解説されたものが多く、初心者にはきつかったからです。特にcmake.orgのチュートリアルはまさにその典型で、チュートリアルのStep 1からして長過ぎて、当に何が必要なのかわかりにくい・・・orz ところが、今学期受けているHigh Performance Computingという講義で行われたCMakeの使い方の解説がわかり易すぎて、あっという間に自作ライブラリをCMakeでコンパイルすることができるようになり、CMakeの便利さに感動してしまいました。私と同じくCMake初心者という方にこの感動を共有すべく、ここに

    CMakeの使い方(その1) - Qiita
  • C言語

    C言語の学習サイトです。C言語入門や仕様解説、サンプルコードの説明等があります。Cを学習して自由自在にプログラミングできるようになりましょう! 3つ理由があると思います。1つは「高級言語でありながら、低水準の面も持つから」です。 解りやすくいうと、人が使う言葉に近い表現でプログラムを記述するプログラミング言語であるが、ハードウェアに密着した処理も容易に記述できる、ということです。 そのため、C言語を学習しておけば、OSやドライバなど、よりハードウェア側のプログラムをつくることも可能です。また、ハードウェアよりの知識を持っていることは、一般のプログラムをつくる上でも非常に役に立つのです。 2つめは「後に開発されたプログラミング言語に大きな影響を与えたから」です。 C言語に影響を受けたプログラミング言語は非常に多く、C++Java、Objective-Cなどがあげられます。awk、csh、J

  • 最小限の分割 - 苦しんで覚えるC言語

    これまでプログラムを記述する時には、エディタのウィンドウに書き込んできましたが、 その時、常に1つの画面の中にすべてのプログラムを記述してきました。 つまり、1つのファイルの中にすべてのプログラムを記述してきたことを意味します。 この方法は単純なので、規模の小さなプログラムでは有効な方法です。 しかし、規模が大きなプログラムでは、1つのファイルにすべてを書き込んでいると、 どこにどのプログラムがあるのかがわかりにくくなります。 さらに、何人かで1つのプログラムを作ろうとする場合には、 1つのファイルに2人以上の人が同時に書き込むことは基的に不可能なので、 2人以上でのプログラミングは事実上不可能になってしまいます。 この問題の解決には、複数のファイルに分割してプログラムを書く必要があります。 複数のファイルに分割することで、どこにどのプログラムがあるのかわかりやすくなり、 また、何人かで

    最小限の分割 - 苦しんで覚えるC言語
  • 【C言語】配列を引数として渡すことの考察(2次元配列まで) - Qiita

    はじめに C言語の関数で、配列を引数として渡す方法については、数多のサイトで紹介されています。 ただし、2次元配列については方法が複数あり、うまく使い分けることが必要となりますので、そのあたりの考察を含めて書いておきます。 わかりやすいように図表をつけて、1次元配列から2次元配列まで順を追って書いていきます。 使用している環境はmacで、コンパイラはgccです。 1次元配列(数値型)を引数として渡す まずは、基形として、数値型(int)の1次元配列についてです。 C言語では、配列そのものを引数として渡せないので、ポインタを引数として渡します。 具体的には、次のソースコード中、main関数4行目にあるnum_arr(num, numlen);のところとなります。 ●ソースコード #include <stdio.h> void num_arr(int *num, int numlen) {

    【C言語】配列を引数として渡すことの考察(2次元配列まで) - Qiita
  • C初心者が知っておきたいヘッダーファイルとリンクの基礎知識

    C初心者が知っておきたいヘッダーファイルとリンクの基礎知識:目指せ! Cプログラマ(終)(1/4 ページ) プログラミング言語の基となる「C」の正しい文法や作法を身に付ける入門連載です。今回は、ヘッダーファイルとリンクを中心に、翻訳単位、ファイル有効範囲、外部定義と仮定義、外部結合と内部結合、結合と記憶域期間、インライン関数の結合、static、extern、inlineなどについても解説。 C言語の処理を複数のファイルに分けて書くには 入門連載「目指せ! Cプログラマー」では、これまで、C言語の初心者でも分かるようにさまざまな基文法や基礎構文、標準ライブラリの使い方などを解説してきました。新社会人はもちろん、C言語に入門したいという方もあらためてバックナンバーを読み返してみてください。 連載もいよいよ終盤です。今回は、C言語の処理を複数のファイルに分けて書く方法について解説します。

    C初心者が知っておきたいヘッダーファイルとリンクの基礎知識
  • Callback関数を知らん人がまず理解すべきことのまとめ。

    カメラ, IT, ガジェット, プログラミング等々, 自由気ままに気になったことを書き綴るブログです。

  • セクション名の意味

    プログラムや変数はメモリ空間上に配置されていますが,割り当てられている場所のことをセクションといいます.セクションを変更するには,プロジェクトツリー上の「CC-RX(ビルド・ツール)」⇒「プロパティ」タブ⇒「よく使うオプション(リンク)」⇒「セクションの開始アドレス」を選択します.これを選択すると,右側にボタンが現れますので,これを押してください. セクションとそのアドレスを示すダイアログが現れますので,追加,変更もしくは削除を行えます. さて,セクションは初めからいくつかの名前が定められており,それぞれ役割が異なります.以下では,セクションごとの役割について説明します.まず,セクション名の接頭辞について説明します.下記のアルファベットがセクション名の先頭についた場合,そのセクションの役割がわかります. P : プログラム領域 C : 定数領域 D : 初期化データ領域 B : 未初期化デ

  • 16進をASCIIコードに変換する手法

    間違えた(^^;;; _itoa http://www.microsoft.com/japan/msdn/library/defa … で、文字列に変換し、必要であれば、toupperで大文字に。 0x0~0xfまでの範囲で、ロジックを組むのであれば、 if(a >= 0x0 && a <= 0x9) { a += '0'; } else if(a >= 0xa && a<= 0xf) { a = 'A' + ( a - 10); } かな? この回答への補足 回答有難う御座います。 教えて頂いたアドレスのホームページ上に下記のようなプログラムと出力結果がでていましたがbase9以降の結果がなぜそうなるのかが?です。すいませんが教えて下さい。 for( r=10; r>=2; --r ) { _itoa( -1, buffer, r ); printf( "base %d: %s (%d

    16進をASCIIコードに変換する手法
  • ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita

    はじめに はじめまして。 NTTデータ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 C や C++ を使用しているとしばしばビット演算を行う場面が出て来ます。 計算機リソースが限られている状況では、ビットを用いることでデータ量を少なく済ませたり、計算コストを小さく抑えたりすることができるメリットがあります。 記事では、ビット演算を用いて実現できる処理について、簡単なものから高度なものまで集大成します。極力わかりやすく頑張って執筆しました。特に前半 4 つはビットの説明の中でもかなりわかりやすい方だと思います。後半の 7 つのテーマは比較的高度なアルゴリズムの話題ですので、フラグ管理やマスクビットについて詳しく学びたい方は前半 4 つを中心に読んでいただいて、後半 6 つは必要に応じて読んでいただければと思います。反対にビットの知識はあってビットを用いたアルゴリズ

    ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita
  • FONTX

    概要 Arduino core for the ESP32を使い、ESP-WROOM-32で日フォント(FONTX形式)を利用するための実験です。 ESP-WROOM-32で日語を表示したいと思い、ネットを調べていたところ、FONTX形式のフォントを表示する「Arduino Unoで漢字を扱う(FONTX形式のフォントデータの読み込み・表示)」というとても分かりやすくまとめられていたウェブページを見つけました。この記事を参考に、ESP-WROOM-32で日フォント(FONTX)を扱うためのライブラリを作成しました。 今回作成したのは、グリフを取得するだけのライブラリなので、表示のための実装は、表示装置に合わせて別途作成する必要があります。とはいえ、グリフが取得できてしまえば、結構容易に実現できます。 フォントファイルは、例えば、以下のサイトで公開されています。 IPAフォントを元

    FONTX
  • C-Firstボードをe2 studioのGCCで使ってみる - Qiita

    C-Firstボードは書籍に付録DVDにC言語の開発環境CS+があり,文でも使い方を紹介しています。このRL78の統合開発環境にはe2 studioがあると説明されていたので,使ってみた状況を紹介します。 e2 studioにはコンパイラとしてルネサスのCC-RLとGNUのGCCが使えます。 今回はGCCの紹介です。GCCを使うメリットは64KBを超える開発ができることとC++が使えることです。 e2 studioはここからダウンロードしておきます。 https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html#downloads e2 studioにはコンパイラが含まれていませんが,インストール時にデフォルトでCC-RLの追加インストールも含まれています。 e2 studioを起動したらワーク

    C-Firstボードをe2 studioのGCCで使ってみる - Qiita
  • 文字列(string)

    ヌル文字 「'」という文字は文字定数を表すために使用されているので,「'」自身を意味する文字は「\'」と表すことになっている。したがって,「'」を表す文字定数はこれを「'」で括った「'\''」である。 「"」という文字は文字列を表すために使用されているので,「"」自身を意味する文字は「\"」と表すことになっている。 「\」という文字は特殊文字を表すために使用されているので,「\」自身を意味する文字は「\\」と表すことになっている。 表の最後にあるヌル文字「\0」は,次節で説明する文字列の終端を表す文字として使用される。 char 型は文字を表す型ではあるが,その質は1バイトで表された整数(-128~127)を表す型である。したがって, 'a' などの文字定数も整数としての意味を持つ。それを次のプログラムを実行して確認しよう。(%d は整数値を10進数で表示することを指定する) #incl

  • C言語 enum 列挙型【簡単!重複しない連番を作り出す方法】

    こんにちは、ナナです。 構造体に続いて、ユーザー定義型の1つである、enum(列挙型)を紹介しましょう。 例えばスーパーに行くとたくさんの商品が置いてあります。実はそれらの商品には異なる数値が紐づけられており値段などがわかる仕組みになっているのです。 この商品に付ける数値で大事なことは「重複しない数であること」です。このような連番が欲しくなるシーンで活躍するのが列挙型(enum)です。 列挙型は構造体と似た部分があるため、構造体を知らない方は『C言語 構造体 struct【情報のパッケージ化とそのメリット】』を事前に読んでおくとよいです。

    C言語 enum 列挙型【簡単!重複しない連番を作り出す方法】
  • ポインターを理解しよう

    ポインターは、ほかの型と違って、ほかのオブジェクトを参照する値を入れておくためのものです。ポインターの理解はCの学習の肝となる部分です ポインターはオブジェクトを参照する 今回説明するポインターは、型の1つです。 型にはいろいろありますが、例えばint型のオブジェクトにはint型の値を、double型のオブジェクトにはdouble型の値を入れることができました。ポインターのオブジェクトには、他のオブジェクトを参照するための値を入れることができます。 ひとくちにポインターと言ってもいろいろな型があります。いずれも他のオブジェクトを参照しますが、その参照先のオブジェクトの型によりポインターの型が定まります。例えば参照先のオブジェクトの型がintとすると、そのオブジェクトのポインターは「intへのポインター」という型になります。 「intへのポインター」という型は、int * と書きます。

    ポインターを理解しよう
  • C言語の基本事項

  • cdecl: C gibberish ↔ English

    Source Code Try these examples: int (*(*foo)(void ))[3] declare bar as volatile pointer to array 64 of const int cast foo into block(int, long long) returning double cdecl C gibberish ↔ English permalink by ridiculous_fish (and many others)

  • Convert an int to ASCII character in C/C++

  • C言語 ビットフィールドを使ったビット単位のパッケージ方法紹介

    こんにちは、ナナです。 構造体の仲間であるビットフィールド機能を紹介しましょう。 ビットフィールドは構造体の仕組みを利用するため、構造体に関する知識は必ず押さえておきましょう。次の記事を参考にしてください。

    C言語 ビットフィールドを使ったビット単位のパッケージ方法紹介
  • C言語 共用体 union【メモリをシェアする考え方と使い方】

    こんにちは、ナナです。 構造体、列挙型に続いて、共用体のunionを紹介しましょう。 共用体は実践で使用することは多くありませんが、C言語に共用体という仕組みがあることは知っておきましょう。 構造体と似ている部分もあるので、知らない方はこちらの記事を事前に読んでおくとよいです。

    C言語 共用体 union【メモリをシェアする考え方と使い方】
  • 【C言語ポインタ】&(アンパサンド)や*(アスタリスク)の使い分け - Qiita

    はじめに C言語を始めて半年が経ちました。 変数やポインタの前につける & や * 、たくさん出てくると今でも混乱しがちです… というわけで、自分のための備忘録も兼ねて、軽くまとめてみたいと思います! 使い方 通常の変数 まずは、通常の変数の場合! もし以下のようなコードの場合は、、 #include <stdio.h> int main(void) { int var; var = 10; printf("printf var ... %d\n", var); printf("printf &var ... %p\n", &var); return 0; }

    【C言語ポインタ】&(アンパサンド)や*(アスタリスク)の使い分け - Qiita