タグ

cに関するincepのブックマーク (49)

  • C言語(C11)で`main`の定義方法は何が一番正しいのか?

    【注意】下記はC言語での話であって、C++言語の話ではありません。混同しないように! 仕様書を確認する C11仕様書最終ドラフトn1570には int main(void) { /* ... */ } int main(int argc, char *argv[]) { /* ... */ } の二つだけしか書いていません。また、char *argv[]の部分はchar **argvとしてもよいと備考に書かれています。なお、argcとargvは別の名前でもかまいません。ただし、これ以外を禁止しているのでは無く、実装定義の方法でもよいと書いてあります。 では、どうすべきでしょうか?OSやコンパイラによっていちいちmainの書き方を変えるのは、移植性を低くし、不具合の温床とのなります。よって、上の三種類以外は使用すべきではありません。上の三つが正常に動作しないようなコンパイラは消費期限が切れて

    C言語(C11)で`main`の定義方法は何が一番正しいのか?
    incep
    incep 2018/10/13
    "a()関数にパラメーターを色々渡していますが、エラーになりません。もしint a(void)としていた場合は、a(1)のところでエラーになってしまいます。つまり、()はどんな引数でもかまわないという意味になります。" 謎仕様
  • Visual Studio 2015 crashes

    incep
    incep 2018/10/12
  • 本の虫: CとC++の違い: 宣言編

    京都C++勉強会の宣伝のために、CとC++の違いを、少しづつ解説することにした。 江添とボレロ村上の京都C++勉強会が、12月16日に行われる。これを書いている時点では、まだ空きがあるので、最新のC++14の新機能と、コンパイル時レイトレーシングを勉強したければ、ATNDで参加申し込みをせよ。 江添とボレロ村上の京都C++勉強会 | 集客ならイベントアテンド 今日は、宣言の違いを解説する。 C++では、staticやexternキーワードは、オブジェクトの宣言にのみ使用できる。型の宣言に指定することはできない。Cでは、型の宣言に指定することもできた。その場合、単に無視される。 // Cでは無視される // C++ではエラー static struct S { int i ; } ; C言語では、合法ではあるが、単に無視されていた文法を、禁止しただけだ。このようなコードはまず書かれていないだ

    incep
    incep 2018/10/12
    “C++では、同一のスコープ内で、typedef名とクラス名を重複して宣言することができない(ただし、同名のクラスへのtypedef名を除く)。Cでは、構造体名と異なるエンティティで同名のtypedef名を宣言できる ”
  • How to free memory from char array in C

  • Why C has Pointers

    “What?” & “How?” are the two questions normally answered by C programming articles. This article is on the “Why?”. The reason why something as confusing as pointers are so commonly used in C is rarely mentioned but is very helpful in understanding how to use them. However, just in case you have not yet come across pointers or are not familiar with C at all, I will start with a brief description of

  • Preventing console window from closing on Visual Studio C/C++ Console application

    This is a probably an embarasing question as no doubt the answer is blindingly obvious. I've used Visual Studio for years, but this is the first time I've done any 'Console Application' development. When I run my application the console window pops up, the program output appears and then the window closes as the application exits. Is there a way to either keep it open until I have checked the outp

    Preventing console window from closing on Visual Studio C/C++ Console application
  • 構造体タグ名が必要なケース たとえばリスト構造 | C言語のTipsとサンプル | C入門 基本情報対策講座のcClip

    incep
    incep 2018/08/31
    "自分と同じ形の構造体へのポインタ(ここでは p)をメンバに含めるには、「構造体タグ名」を使う必要があります"
  • PythonのC言語拡張モジュール作成ガイド — PythonのC言語拡張モジュール作成ガイド

    Python APIPython/C APIチュートリアル : http://docs.python.org/extending/index.html Python/C APIリファレンス : http://docs.python.org/c-api/index.html Python APIPythonインストール標準のC言語APIを使用し、拡張モジュールを作成します。 #include <Python.h> static PyObject * fact(PyObject *self, PyObject *args) { int n; int i; int ret=1; if (!PyArg_ParseTuple(args, "i", &n)) return NULL; for (i=n; i>0; i--) ret *= i; return Py_BuildValue("i",

    incep
    incep 2018/08/20
    2系で使えるものは5種類あるのね
  • 微分積分

    静岡理工科大学情報学部コンピュータシステム学科菅沼研究室のページです.主として,プログラミング言語( HTML,C/C++, Java, JavaScript, PHP, HTML,VB,C# ),及び,システムエンジニアとしての基礎知識(数学,オペレーションズ・リサーチやシステム工学関連の手法)を扱っています.

    incep
    incep 2018/05/23
  • C++のメモリ確保と解放 - やってみる

    C++のメモリ確保と解放について調べてみた。 入手先 スタック領域とヒープ領域 項目 スタック ヒープ 管理者 OS・コンパイラ プログラマ 生存期間 関数終了・デストラクタまで delete・freeされるまで 変数サイズ コンパイル時点で固定 実行時に動的 メモリ総量 少ない 多い 確保 int v; int v = new int(); 解放 (宣言した関数終了時に自動解放) delete v; 変数を宣言する方法が違う スタック領域は少ないため、多く確保してしまうとスタックオーバーフローを起こしてしまう。 メモリ確保 メモリ確保にはおおよそ2種類の方法がある。 自動変数によるスタック領域のメモリ確保 newやmallocによるヒープ領域のメモリ確保 int value; 上記のコードは自動変数と呼ぶ。 OSやコンパイラがメモリの確保と解放を行ってくれる。 スタック領域に確保される。

    C++のメモリ確保と解放 - やってみる
  • 第7回 徹底予習:AI時代の組込みシステム開発のお仕事 | 組込みの輪郭 | [技術コラム集]組込みの門 | ユークエスト株式会社

    ユークエスト株式会社は2021年10月1日をもちまして、 株式会社東光高岳に吸収合併を致しました。 Webサイトは下記のURLに移転しました。 https://uquest.tktk.co.jp/ ※5秒後に移転先にジャンプします。

  • 実践C++入門講座11回目 広大なメモリを使うために(ヒープ) | Theolizer®

    こんにちは。田原です。 前回までに説明したプログラム用メモリ、静的変数用メモリ、スタック用メモリは、基的にコンパイル時にサイズが決まります。もし、これらの領域しか使わない場合、巨大なメモリを搭載しているコンピュータでプログラムを走らせても、その巨大なメモリを有効活用できません。それは悲しいですよね。 その巨大なメモリをうまく使うための仕組みが「ヒープ用メモリ」です。今回は、このヒープとその使い方について解説します。 第4回目 コンピュータの仕組みについてで、メモリとそのアドレス、そしてポインタについて少し説明しました。これらはたいへん重要ですので、軽く復習します。 int a; int* b=&a; 上記のようにint型の変数aがあったとします。その変数aはどこかのメモリ上に割り当てられますので、アドレスが割り振られています。その先頭アドレスを取り出す演算子が & でした。つまり、 &a

    実践C++入門講座11回目 広大なメモリを使うために(ヒープ) | Theolizer®
    incep
    incep 2018/05/23
    “クラス”
  • バッファオーバーフローを起こして、バッファオーバーランさせようとしたけど駄目だった話 - dorivenの日記

    どうも、今週はセキュリティ関連の講座に出ており、朝から晩までずっと教室に缶詰の状態でした。 来参加しようとすると非常に高額な参加費が取られるのですが、学生枠ということで無料で参加させて頂きました。 講義の内容などを記事にはしたいと思うのですが、内容は喋ってはいけないという約束なので話せないです。 とりあえず、自分のセキュリティの勉強として「バッファオーバーラン」くらい起こしてみようと思って試行錯誤してみましたが、ちょっと知識不足でした。 来週までには任意のコードが入力を通してOS側にぶち込めるように出来たらいいな、と思うが出来なかったら考える。 プログラムの基的な動作 基的なプログラムを実行するデータ構造は以下のようになっている。 IPA/ISEC から引用 この画像の様に、プログラムの実行コード自体はコンパイル時に計算され、実行時には仮想メモリ領域の先頭に配置される。 その後、ne

    バッファオーバーフローを起こして、バッファオーバーランさせようとしたけど駄目だった話 - dorivenの日記
    incep
    incep 2018/05/08
    scanfが何故禁止されるのか.わかりやすい実例
  • Why don't we rewrite the Linux kernel in C++? | Hacker News

    incep
    incep 2018/03/22
    C++に移行せず、goto文を使い続ける理由: "switching to if-then-else blocks might be good Computer Science theory, but using goto's is good Engineering."
  • ポインタ虎の巻~ポインタの型

    ここでは、変数には、整数型int,文字型char,浮動小数点型doubleなどの型があることに注意してポインタを見て行こう。 これらの変数の型は、その変数の値が必要とするメモリのサイズの情報を持っている。一般的なUNIXでは、int = 4byte, char=1byte, double=8byte が普通であり、変数の型に合わせてその変数がメモリ上で占めるべきサイズが確保されている。サイズを知るためには printf("size of int=%d\n", sizeof(int)); printf("size of char=%d\n", sizeof(char)); printf("size of double=%d\n", sizeof(double)); printf("size of pointer to char=%d\n", sizeof(char *)); printf("

  • メモリリークしない安全なプログラムの書き方

    とりあえず動くプログラムを書く ここでは例として、Fooという構造体の2次元配列を、引数で指定された幅と高さで作る、createFooMatrixという関数を作ってみます。 なお、配列の各要素を、initializeFoo関数で初期化しています。 Foo **createFooMatrix ( int width, int height ) { Foo **ptr = NULL; int w, h; ptr = (Foo **)malloc(height * sizeof(Foo *)); for (h = 0 ; h < height ; h++) { ptr[h] = (Foo *)malloc(width * sizeof(Foo)); for (w = 0 ; w < width ; w++) { initializeFoo(&ptr[h][w]); } } return ptr;

  • 配列 (C言語)

    a[9] 上のように宣言された配列の場合, a[10] という要素は存在しない。 しかし, a[10] という存在しない要素をプログラム中で参照したとしても,コンパイル時にはエラーは出ない。 しかし,そのプログラムは期待した通りには動かないだろうし,a[10] に何かの値を代入しようとした場合,それは他のメモリ領域を破壊することになり,プログラムがクラッシュする原因となる。 配列のサイズと要素数 型が必要とするバイト数および変数や配列に割り当てられたバイト数を得るための演算子 sizeof がある。これを用いて,宣言済みの配列の要素数を得ることができる。 sizeof 演算子は, sizeof(型名) または sizeof(変数名) のように使用することで,指定された型が必要とするメモリサイズまたは変数に割り当てられたメモリサイズを得ることができる。得られる数値はバイト単位である。 これを

  • 第 11 章 ポインタとリスト構造

    大岡山地区の建物 大学正門より,桜並木のウッドデッキを通り,右手の芝生をつっきる小径が西8号館,西7号館に続くみちです. 大岡山西8号館(E棟,W棟): キャンパスマップの18, 19番の建物にあたります.館の西隣りに位置しています.正面玄関をはいったところは3階です. E棟においでの方は廊下をはいってすぐ左手のエレベータをご利用下さい. W棟にはじめておいでの方は十分に注意して下さい.E棟とW棟を繋いでいる通路は3階と10階にしかありません.E棟のエレベータを利用すると迷子になります.正面玄関から廊下をまっすぐにおいでになり,奥の右手にあるエレベータをご利用下さい. 西7号館:キャンパスマップの17番の建物にあたります.西8号館から,建物を二つ挟んだ並びにあります.芝生から向う場合,左手に館を見ながら進み,館がとぎれたあたりの右手にある小さな建物が西7号館です.橋を渡ってはいったと

    第 11 章 ポインタとリスト構造
  • Reentrancy (computing) - Wikipedia

    This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Reentrancy" computing – news · newspapers · books

    incep
    incep 2015/02/12
    "In computing, a computer program or subroutine is called reentrant if it can be interrupted in the middle of its execution and then safely called again ("re-entered") before its previous invocations complete execution."
  • 今すぐ使える C++ コーディングテクニック集 - torus711 のアレ

    前置き これは、Competitive Programming Advent Calendar Div2013, 第 5 日の記事です。 記事の内容はタイトルの通り、アルゴリズムではなくコーディング自体に関するテクニック集です。(おそらく)競技プログラミング界隈ではこういった知識についてのまとまった資料が少なく、他の参加者のコードを見て盗まなければならないというのが現状だと思います。当ブログでも、テクニカルな書き方をしたコードを特に説明せずに掲載しているので、わたしがよく使っているものをまとめてみようと思いました。 この記事の内容を実践することで、例えば次のような効果があります。(個人の感想です) コード量が減少し、すっきりまとまったコードになってうれしい コードの意味が分かりやすくなり、デバッグしやすくなってうれしい Challenge / Hack の際に変なコードでも読めるようになっ

    今すぐ使える C++ コーディングテクニック集 - torus711 のアレ
    incep
    incep 2013/12/10
    Pythonに転用可能なのもある。