共有リソースにアクセスするいくつかのプロセスを同期させるためにpthreadまたはセマフォを使用する必要があります。クラスのすべての例では、グローバル変数を共有リソースとして使用していたので、同じことを行う予定でしたが、共有リソースの値をコマンドライン引数に基づいて設定したいと考えました。 私はメインメソッド内でコマンドライン引数を使用する方法を知っていますが、コマンドライン引数に基づいてグローバル配列(共有リソース)のサイズを定義する方法はありますか?コマンドラインからグローバル配列のサイズを定義する
更新:それは動作しますように
Wallykの答えはそうですが、私はまだ細かい詳細の一部にあいまいです。あなたが好きな静的、動的宣言を行うことはできません
#include <stdio.h>
void print_array(void);
int *array;
int count;
int main(int argc, char **argv){
int count = atoi(argv[1]);
array = malloc(count *sizeof(array[0]));
int i;
for(i = 0; i < count; i++){ /*is there anyway I can get the size of my array without using an additional variable like count?*/
array[i] = i;
}
print_array();
return 0;
}
void print_array(){
int i;
for(i = 0; i < count; i++){
printf("current count is %d\n", array[i]);
}
}
あなたはアップデートが本当に別の質問ですので、まずWallykの答えを選択してください。他の変数を使わないことに最も近いのは、 'int * array'と' int count'を構造体に格納することです。これは実際には2つの変数ですが、より明白な方法で結び付けられています。他のものについてもその構造体を再利用することができます。 – nategoose
@nategooseそれは本当に別の質問ではありません、私はちょうど与えられた答えを明確にしたい...そして私はいつも答えを最終的に選択します:) – ubiquibacon