ポインタと配列を組み合わせた入社試験問題の詳細解説

問題1:ポインタ演算とメモリ配置の理解 #include <stdio.h> int main() { int a[4] = {1, 2, 3, 4}; int* ptr1 = (int*)(&a + 1); int* ptr2 = (int*)((int)a + 1); printf("%x %x\n", ptr1[-1], *ptr2); return 0; } &a は配列全体のアドレスを指し、その型は int (*)[4] です。 &a + 1 は配列全体を飛び越えたアドレスを示しま ...

6月23日 21:40 投稿

C言語における多次元配列操作の実践的実験

実験課題1 ソースコード: 1 #include <stdio.h> 2 #define ROWS 4 3 #define COLS 2 4 5 void test1() { 6 int data[ROWS] = {1, 9, 8, 4}; 7 int index; 8 9 // 配列dataが占めるメモリバイト数を出力 10 printf("sizeof(data) = %d\n", sizeof(data)); 11 12 // 各要素のアドレスと値を出力 13 for (ind ...

6月22日 19:21 投稿

C言語プログラミング演習:学籍番号抽選と条件判定

学籍番号生成プログラム 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #define 抽選回数 5 5 #define コンピュータ下限 397 6 #define コンピュータ上限 476 7 #define キアン上限 21 8 9 int main() { 10 int カウンター = 0; 11 int 学科コード, 番号; 12 srand(time(NULL)); 13 14 while (カウン ...

6月21日 22:20 投稿

C言語:ループと分岐(数字当てゲーム)

分岐文 (1)if文 if(条件式) // 条件式が0の場合は偽、非0の場合は真。&&で論理積、||で論理和を使用 { // 実行する内容、複数行ある場合は中括弧が必要 } else if // 以前の条件が満たされない場合に実行。elseの後にifをネスト可能 { } elseの関連付けに注意。elseは最も近いifと組み合わされます。必要に応じて中括弧を使用してください。 ...

6月20日 22:52 投稿

C言語でのSQLite3データベース操作実例

SQLite3データベースの基本操作 SQLiteは軽量でサーバレスなデータベースエンジンであり、C言語プログラムに組み込むことが可能です。 主要なSQLコマンド例 // テーブル作成 "CREATE TABLE PRODUCTS " "(PRODUCT_ID INTEGER PRIMARY KEY AUTOINCREMENT," " PRODUCT_NAME TEXT NOT NULL, " " STOCK_QTY INTEGER NOT NULL, " " UNIT_PRICE REAL)" // テーブル削除 "DROP T ...

6月19日 20:51 投稿

単方向連結リストの設計原理と実装手法

1. 連鎖記憶方式の基本概念 線形リストを物理メモリ上に配置する際、隣接する論理要素が連続したアドレスを持つ必要はない。この配置方式は非順序記憶とも呼ばれ、任意のメモリ領域にデータを分散させ、ポインタによって前後の論理関係を維持する。これにより、要素の追加や削除が配列に比べて効率的に行える一方、インデックスによる直接アクセスは不可能となる。 1.1 基 ...

6月19日 18:41 投稿

C言語によるファイル操作の実装方法

C言語でのファイル入出力処理に関する基本的なサンプルコードを以下に示します。 ファイルへの書き込み #include <stdio.h> int main() { FILE *fp; // 書き込みモードでファイルを開く(存在しない場合は作成し、既存の場合は内容をクリア) fp = fopen("sample.txt", "w"); if (fp == NULL) { printf(&q ...

6月18日 23:09 投稿

C言語における構造体の利用方法

目次 構造体 構造体とは何か? なぜC言語に構造体が導入されたのか? 構造体型の宣言 構文構造 練習問題 構造体メンバの型 構造体変数の定義 構造体の初期化 構造体メンバへのアクセス 構造体の関数渡し 構造体 今年の立秋は早かったですね。皆さんは初めての秋のカフェオレを飲めましたか?今日は構造体について詳しく説明します。この記事では基本的な内容を扱い、今後の ...

6月17日 23:13 投稿

情報の保存:メモリとデータ形式

大多数のコンピュータは、メモリ内の個々のビットに直接アクセスするのではなく、8ビットのブロック、すなわちバイト(byte)を最小のアドレス可能なメモリ単位として使用します。マシンレベルのプログラムは、メモリを非常に大きなバイト配列と見なします。この配列は仮想メモリ(virtual memory)と呼ばれます。メモリの各バイトは一意の数字、アドレス(address)によっ ...

6月15日 19:14 投稿

C言語の標準入出力とファイル入出力の基本

標準入出力 (Standard I/O) 標準入出力は、C言語で最も基本的なファイル操作です。`stdin`(標準入力)、`stdout`(標準出力)、`stderr`(標準エラー出力)の3つのストリームが事前に定義されており、これらはプログラムの起動時に自動的に開かれます。これらのストリームは、`FILE`型のポインタを通じて操作されます。 ファイルのオープンとクローズ ファイルを操作する ...

6月14日 16:07 投稿