Rustにはポインタ型のデータがあるのか?変数のメモリアドレスを確認できるか?

Rustでは、C/C++のような直接的なポインタ型は存在しないが、ポインタの概念はあり、メモリを安全に操作するためのさまざまな方法が提供されている。変数のメモリアドレスを確認することも可能である。 1. 参照(References) Rustの参照(& と &mut)は、所有権ルールと借用チェックによって保護された安全なポインタと見なすことができる。参照は変数の値にアク ...

5月25日 16:15 投稿

C言語における関数ポインタと関数ポインタを返す関数の仕組みと実装

関数ポインタについて 関数ポインタ(Function Pointer)は、コードメモリ上の関数のアドレスを格納するための変数です。これを利用することで、プログラムの実行時に動的に呼び出す関数を切り替えることが可能になります。主にコールバック処理やイベント駆動型の設計、あるいは関数テーブル(ジャンプテーブル)の実装において非常に重要な役割を果たします。 実装手順 ...

5月22日 21:02 投稿

C++のキーワードと演算子の詳細

ポインタと参照 基本定義 ポインタ: オブジェクトのアドレスを格納する変数。自身のメモリアドレスを持つ。 参照: 変数の別名。宣言時に初期化必須。 相違点 特性ポインタ参照 多重間接参照サポート (例: int**)単一参照のみ null許容NULL/nullptr可不可 初期化宣言と初期化を分離可宣言時必須 再代入対象変更可不可 sizeof演算ポインタサイズを返す(4/8byte)参照先サ ...

5月20日 03:36 投稿

C言語基礎ガイド:データ型から制御構文まで

データ型とC言語 基数の表示 // 10進数、8進数、16進数で値256を表示 #include <stdio.h> int main(void) { int val = 256; printf("dec=%d; oct=%o; hex=%x\n", val, val, val); printf("dec=%d; oct=%#o; hex=%#x\n", val, val, val); return 0; } 10進数は%d、8進数は%o、16進数は%xで表示します。接頭辞(0, 0x)を表示するには%# ...

5月17日 22:27 投稿

シングルリンクリストの詳細な実装(C言語)

シングルリンクリストとは シングルリンクリスト(Singly Linked List)は、データをノードとして格納し、各ノードが次のノードへのポインタを持つ線形データ構造です。配列や順序リスト(シーケンシャルリスト)と異なり、データの挿入・削除が柔軟で、必要に応じて動的にメモリを確保できます。 シングルリンクリストの構造 シングルリンクリストは、各ノードが2つの部 ...

5月15日 05:09 投稿

組込みシステムにおけるC言語の基本概念

関数とポインタの理解 関数の役割と種類 関数は特定の処理を再利用可能なコードブロックとして定義する仕組みです。コードの再利用性を高め、保守性を改善する目的で使用されます。 関数定義と呼び出しの基本 #include <stdio.h> // 関数のプロトタイプ void printBanner(); int main() { // 3回関数を呼び出す printBanner(); printBanner(); p ...

5月14日 19:59 投稿

C言語における文字列処理の変数予期せぬ挙動と解決策

開発環境:AMDプロセッサ、Windows 10 64bit、Cygwin64、Visual Studio Code、Code Runner拡張機能 問題が発生したコード例: #include<string.h> #include<stdio.h> typedef char DataType; typedef struct TreeNode { DataType value; struct TreeNode *left; struct TreeNode *right; } TreeNode, *TreePtr; TreeNode* parseExpression(const ...

5月14日 13:03 投稿