Я делаю задание, где мне нужно использовать pthreads или семафоры для синхронизации некоторых процессов, которые обращаются к некоторому общему ресурсу.Поскольку все наши примеры в классе используют глобальную переменную в качестве общего ресурса, я планировал сделать то же самое, но я хотел основать значение общего ресурса на аргументе командной строки. Я знаю, как использовать аргументы командной строки в моем методе main, но как мне определить размер глобального массива (общего ресурса) на основе аргумента командной строки?
Обновление:
Кажется, что ответ Уоллика сработает, но я все еще не совсем уверен в некоторых деталях.Смотрите пример и комментарии ...
#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]);
}
}