ポインタと配列を組み合わせた入社試験問題の詳細解説
問題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 投稿