C言語で放物線を描く リンクを取得 Facebook × Pinterest メール 他のアプリ 4月 20, 2023 初速度を入力して放物線を描くプログラムです。 物体を真上に投げることを鉛直投げ運動といいます。 時間の経過に伴う物体に高さをグラフにすると放物線になります。 プログラムのすべてを解説しています。 続きを読む
最大公約数と最小公倍数を求めるプログラム【C言語】 リンクを取得 Facebook × Pinterest メール 他のアプリ 4月 19, 2023 分数の足し算を学習プログラムを作成しました。 2つの分数の分母を同じ数字に揃える通分の処理に 最大公約数と最小公倍数を求める必要があります。 C言語による最大公約数と最小公倍数の求め方を解説します。 続きを読む
C言語で打ち上げ花火【円周上の座標を求める】 リンクを取得 Facebook × Pinterest メール 他のアプリ 4月 18, 2023 打ち上げ花火のプログラムをC言語で作成しました。 三角関数(sin、cos)で求めた円周上の座標に「*」を表示して花火を表現しています。 続きを読む
C言語でハノイの塔 「再帰」で超簡単攻略 リンクを取得 Facebook × Pinterest メール 他のアプリ 4月 17, 2023 ハノイの塔を解くプログラムをC言語で書きました。 ハノイの塔は左端の円盤をルールに従って中央もしくは右端に移動させるパズルです。 ルールは、常に、小さな円盤の上に大きな円盤が乗らないように移動させることです。 続きを読む
exit(0)とreturn 0の違い リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 26, 2023 hoge1関数内のexit(0)は、その場でプログラムを強制終了します。 hoge2関数内のreturn 0は、呼び出し元のmain関数に戻ります。 続きを読む
gets関数が廃止された理由 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 25, 2023 バッファオーバーフローの脆弱性があるため廃止されました。 fgets関数がgets関数の代替として利用できます。 ただし相違点はあります。 fgets関数は入力の改行文字がバッファに格納されます。 また入力ストリーム上にバッファが残ってしまう仕様です。 続きを読む
ポインタの戻り値 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 24, 2023 関数内のstaticなしで定義した変数は関数が終了すると解放されます。 自動変数領域のアドレスを関数の戻り値にすることはできません。 静的領域に割り付けられる文字列リテラルのアドレスは戻り値にすることができます。 続きを読む
関数内のstatic リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 23, 2023 関数内でstaticをデータ型の前に追加して変数を初期化すると、 その変数に対してプログラム終了時まで有効な静的領域が確保されます。 初期化は一度のみで、 関数が複数回呼び出された場合は、 前回に呼び出されたときの値が保持されています。 続きを読む
const リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 22, 2023 constをデータ型の前に追加して初期化すると 変数の値、配列の要素、ポインタが指し示す先の値が変更不可になります。 const int a = 5; const int b[] = {10,20}; const char s[] = "papa"; const char *p = "kingyo"; 以下はpの値が変更不可になります。 char * const p = "kingyo"; 続きを読む
fopne()とopen()の違い リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 21, 2023 fopne()は高水準入出力、 opne()は低水準入出力としてファイルをオープンします。 高水準入出力はHDDなどの外部補助記憶装置へのアクセス回数を減らすためにメインメモリのバッファ領域を介してファイルの入出力を行います。 低水準入出力はバッファリングを行いません。 続きを読む
変数とアドレス リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 20, 2023 &aは5の格納先アドレスです。 &b[0]は10、&b[1]は20の格納先アドレスです。 bと&b[0]は等価です。 &s[0]は'p'、&s[1]は'a'の格納先アドレスです。 sと&s[0]は等価です。 &dt.noは100の格納先アドレスです。 &dtと&dt.noは等価です。 続きを読む
安全なポインタの使い方 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 19, 2023 ①変数宣言時にNULL(0番地)で初期化します。 int a = 5; int *p1 = NULL; p1 = &a; ②指し示す先を参照する前にNULLチェックします。 if(p1 != NULL){printf("%d\n",*p1)}; ③指し示す先のメモリを解放したらNULLを代入します。 free(p2); p2 = NULL; 続きを読む
ダブルポインタ リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 18, 2023 ダブルポインタはポインタのポインタです。変数の前に「**」をつけて宣言します。 int a = 5, *p, **PP; p = &a; pp = &p; *p:pが指し示す先の値(aの値) *pp:ppが指し示す先の値(pの値) **pp:ppが指し示す先が指し示す先の値(aの値) 続きを読む
文字列をポインタで管理 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 17, 2023 char *p1 = "Hello"; p1に文字列の先頭アドレスが格納されます。 printf("%s\n",p1); static char *p2[] = {"Papa","Kingyo"}; p2[0]、p2[1]に各文字列の先頭アドレスが格納されます。 printf("%s\n",p2[0]); printf("%s\n",p2[1]); 続きを読む
文字列を配列として格納 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 16, 2023 static char str1[] = "Papa"; 配列名は文字列が格納されている先頭アドレスです。 printf("%s\n",str1); static char str2[][10] = {"Papa","Kingyo"}; 配列名[添字]は各文字列が格納されている先頭アドレスです。 printf("%s\n",str2[0]); printf("%s\n",str2[1]); 続きを読む
ポインタを理解する リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 15, 2023 初期化した変数aとポインタ変数pを宣言します。 int a = 5, *p; pにaのアドレスを格納します。 このとき、pはaを指し示すといいます。 p = &a; *pでpが指し示す先の値を参照できます。 pが指し示す先はaです。 printf("*pの値 = %d\n",*p); 続きを読む
加算による減算 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 14, 2023 引く数の補数を用いると減算を加算で表現できます。 例えば「15-8=7」について、 引く数「8」の補数「2」を用いて、加算で表現すると「15+2=17」となります。 結果「17」の最上位の桁を取り除くと「7」となり、 減算の結果と同じになります。 2進数の減算 例えば「6-2=4」を4ビットの2進数で加算表現します。 「6」は「0110」、「2」は「0010」で、 その補数は「1110」だから「0110」+「1110」=「10100」となります。 5ビットの「1」は、桁あふれなので無視すると、 結果は「0100」となります。 「0100」は10進数の「4」です。 続きを読む
2進数の正負の数 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 13, 2023 2進数の正⇔負の変換は、先頭に「+」「-」を付けるのではなく、2の補数で行います。 例えば、10進数の「3」は、4ビットの2進数で「0011」ですが、 「0011」の2の補数「1101」が、10進数の「-3」であり、 「1101」の2の補数「0011」が、10進数の「3」です。 符号付き2進数において最上位ビットは符号を表す符号ビットとして使用されます。 符号ビットが「0」だと正の数、「1」だと負の数になります。 <4ビットの2進数> 0000 0 0001 1 1111 -1 0010 2 1110 -2 0011 3 1101 -3 0100 4 1100 -4 0101 5 1011 -5 0110 6 1010 -6 0111 7 1001 -7 1000 -8 続きを読む
補数 リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 12, 2023 ある数に対して、桁上がりさせることができる最小の数を補数といいます。 例えば、10進数において、8を桁上がりさせることができる最小の数は2であり、85を桁上がりさせることができる最小の数は25です。この場合、2と25は補数といえます。 特に、10進数における補数のことを10の補数といいます。 10進数において、桁上がりさせない最大の数を「9の補数」といいます。 例えば、8の「9の補数」は1、85の「9の補数」は24です。 2進数における補数 例えば「0110」の補数は「1010」です。 「1010」は「0110」に足すと「10000」となり、桁上がりさせることができる最小の数だからです。 特に、2進数における補数を2の補数といいます。 2進数において、桁上がりさせない最大の数を「1の補数」といいます。 例えば「0110」の「1の補数」は「1001」です。 「1001」は「0110」に足すと「1111」となり、桁上がさせない最大の数だからです。 ビット反転させると「1の補数」になります。 「1の補数」に1を足すと「2の補数」になります。 続きを読む
ファイルディスクリプタ(fd) リンクを取得 Facebook × Pinterest メール 他のアプリ 2月 11, 2023 ファイルを識別するための整数値です。 stdin、stdio、stderrのfdはそれぞれ0、1、2になります。 ファイルオープンするとfdは3から順番に割り当てられます。 open()でオープンに成功するとfdを返す。 fopen()ではFILE構造体のメンバ「_fileno」でfdを確認できます。 続きを読む