ポインタと配列に関するC言語の実験

実験1:配列の最小値・最大値をポインタで取得 ソースコード1(アドレス経由の間接代入) #include <stdio.h> #define N 5 void input(int arr[], int len); void output(int arr[], int len); void find_min_max(int arr[], int len, int *pmin, int *pmax); int main() { int a[N]; int min, max; printf("データを%d個入力:\n", N); input(a, ...

7月12日 21:58 投稿

C言語での単方向リスト:先頭へのノード挿入実装

連結リストのノード構造体定義 C言語における単方向リストの各要素は、データを保持するフィールドと、次の要素へのメモリアドレスを持つ構造体として定義されます。 typedef struct ListItem { int value; struct ListItem* link; } ListItem; リスト先頭へのノード挿入ロジック リストを新規作成する際、最初は要素が存在しないため、先頭ポインタはNULLを指し ...

7月9日 00:46 投稿

C言語におけるポインタと配列の高度な操作

タスク1: 配列の最小値と最大値の検索 #include #define ARRAY_SIZE 5 void inputData(int data[], int size); void displayData(int data[], int size); void findMinMax(int data[], int size, int *minPtr, int *maxPtr); int main() { int numbers[ARRAY_SIZE]; int minValue, maxValue; printf("%d個のデータを入力してください:\n", ARRAY_SIZE); ...

6月29日 22:38 投稿

C言語におけるポインタ操作と文字列処理の実践

配列とポインタによるデータ処理 C言語において、ポインタを利用することで配列のデータを効率的に操作できます。以下の例では、整数配列を受け取り、その最小値と最大値をポインタ経由で書き換える関数を定義します。また、2次元配列を異なる種類のポインタ(要素へのポインタと配列へのポインタ)を用いて走査する方法を示します。 #include <stdio.h> void anal ...

6月29日 17:20 投稿

C言語プログラミング演習問題集

プログラミング問題と解説 問題1: 再帰関数の呼び出し回数 #include <stdio.h> int count = 0; int fibonacci(int num) { count++; if (num == 0) return 1; if (num == 1) return 2; return fibonacci(num - 1) + fibonacci(num - 2); } int main() { fibonacci(8); printf("%d", count); return 0; } 実行結果: 67 問題2: do-whi ...

6月27日 20:33 投稿

C言語文字列処理関数の実装とメモリ操作の実践的解説

C言語における文字列処理は、プログラミングの基本中の基本です。しかし、标准ライブラリ提供的`strcpy`や`printf`などの関数がどのように実装されているかを見たことがありますか?本稿では、南京大学ICS-PA2实验で取り上げられているように、从零から这些関数を実装していく过程を追います。これは単なる演习ではなく、コンピュータシステムの底层 동작を理解する绝好の ...

6月24日 00:03 投稿

C++関数とモジュールの実践演習

7.12 復習問題 1. 関数の宣言、定義、呼び出しの順序について説明せよ 2. 以下の関数プロトタイプを作成せよ a. void igor(); b. float tofu(int n); c. double mpg(double d1, double d2); d. long summation(long data[], int size); e. double doctor(const string s); f. void ofcourse(boss b); g. string plot(map *m); 3. 配列要素を指定値で初期化する関数 void ...

6月13日 22:51 投稿

C言語のポインタ:概念・仕組み・実用例(前編)

C言語におけるポインタ(pointer)は、多くの学習者にとって最初の難関です。本稿では、ポインタの背景にある設計思想と実際の動作原理を、具体的なコード例を交えながら段階的に解説します。 1. ポインタの必要性と抽象化の evolution ポインタが導入された根本的な理由は、「効率的なメモリ操作を可能にすること」です。抽象的に述べれば、データ構造や関数間通信にお ...

6月12日 19:20 投稿

C++ 面接問題集:ポインタ、配列、const の基礎

1. for ループと while ループの変換 for 文は while 文に書き換え可能である。同様に do-while 文でも実現できる。条件判定のタイミングが異なるが、制御構造の本質は同じである。C++ ではループ制御の書き換えが容易であり、可読性向上のために適宜選択する。 2. 二次元配列の文字列出力 #include <cstring> #include <cstdio> int main() { char data ...

6月12日 18:56 投稿

C言語における一次元配列とポインタの関係

一次元配列のメモリ上の配置 #include <stdio.h> int main() { int numbers[8]; int index; for (index = 0; index < 8; index++) { printf("int型のサイズ: %zu ", sizeof(int)); printf("&numbers[%d] = %p ", index, &numbers[index]); } return 0; } int型のサイズ: 4 &numbers[0] = 0 ...

6月11日 19:39 投稿