Я выполняю назначение, где мне нужно использовать pthreads или семафоры для синхронизации некоторых процессов, которые обращаются к некоторому общему ресурсу. Поскольку все наши примеры в классе используют глобальную переменную в качестве общего ресурса, который я планировал сделать с тем же, но я хотел бы основывать значение общего ресурса на аргументе командной строки. Я знаю, как использовать аргументы командной строки в моем основном методе, но как определить размер глобального массива (общий ресурс) на основе аргумента командной строки?Определить размер глобального массива из командной строки
Update:
ответ 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]);
}
}
Вы обновление - это еще один вопрос, поэтому вы должны пойти дальше и выбрать ответ Уоллика. Ближе всего вы можете не использовать другую переменную - хранить в массиве `int * array` и` int count`. Это действительно две переменные, но они связаны более очевидным образом, и вы можете повторно использовать эту структуру для других вещей. – nategoose 2010-11-30 20:34:04
@nategoose это не совсем другой вопрос, я просто хочу быть в курсе ответа, который был дан ... и я всегда выбираю ответ в конце концов :) – ubiquibacon 2010-11-30 20:39:30