DynamicMemAllocプロジェクトのTableUtilit.hに関して | C++ Forum | Tech Stadium Forum

DynamicMemAllocプロジェ...
 
通知
すべてクリア

DynamicMemAllocプロジェクトのTableUtilit.hに関して  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
09/05/2024 10:41 am  

DynamicMemAllocプロジェクトのTableUtilit.hに関して質問です

①externはどのような意味でしょうか。つけているのはなぜですか?使用しなかった場合はどうなりますか

②dumpTable関数の宣言でconstが二回出てくるのはなぜですか?setupTable関数は1つなのでどのような目的や違いがあるのでしょうか? 

 

namespace TableUtility

{

//外部で定義しているkTableSizeを宣言 extern const int kTableSize;

//---------------------------------

//tableを操作する関数

void setupTable(int* const table);

void dumpTable(const int* const table);

}

 


引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
09/05/2024 10:54 am  

①externで宣言すると他のソースファイルでアクセスできるようになります。

TableUtility.hでkTableSizeがexternになってますので

TableUtility.cppのkTableSizeがmain.cppでアクセスできるようになります。


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
09/05/2024 10:55 am  


void dumpTable(const int* const table);
constは値を変更禁止にするキーワードです。
const int* const tableconstを2回付けていますのでこの意味はポインターデータ(ポインター変数のメモリー領域データ)変更禁止とポインターが指す実際のデータを変更禁止にします。
両方変更できないのでデータ出力するだけの時に使うといいです。データを変更しないのでデータの安定性がいいです。

void setupTable(int* const table);
この場合はポインターデータ(ポインター変数のメモリー領域データ)変更禁止になります。setupTable関数でtable中のデータは変更可能なのでsetupTable関数でtableデータをセットしてます。

void setupTable(const int* table);
逆にこのパターンも宣言可能です。この場合はtable中のデータは変更禁止になりますがポインターデータは変更可能です。ポインターデータは変更可能なので他のtableデータを動的メモリー確保してそのデータをポインターが指すように変更することは可能です。


返信引用
共有:
タイトルとURLをコピーしました