Передайте глобальную переменную методу в качестве аргумента

#c #global-variables #pass-by-reference #pass-by-value #pass-by-pointer

#c #глобальные переменные #проходная ссылка #проходное значение #проходной указатель

Вопрос:

Глобальная переменная:

 int REGISTRATION_SIZE = 10;  

Я хочу передать глобальную переменную(REGISTRATION_SIZE) методу wait_for_avaliable в качестве аргумента метода, такого как wait_for_avaliable(размер int). Как я могу этого достичь?

 void wait_for_available_resource(struct Patient *p, pthread_mutex_t *registration_mutex, pthread_cond_t *register_cond){  int rnd_wait_time;  pthread_mutex_lock(registration_mutex);  while(REGISTRATION_SIZE == 0){  rnd_wait_time = generate_rnd_numb(WAIT_TIME)   1;  printf("Patient[%d] is waiting for an availabe desk.n",p-gt;thread_num);  sleepForMs(rnd_wait_time);  increase_meters(p);  checkForRestOrCafe(p);  pthread_cond_wait(register_cond,registration_mutex);  }  REGISTRATION_SIZE--;  printf("Registration size:%dn",REGISTRATION_SIZE);  pthread_mutex_unlock(registration_mutex);   }  

Я пробовал использовать этот способ, но он не работает:

 void wait_for_available_resource(struct Patient *p, pthread_mutex_t *registration_mutex, pthread_cond_t *register_cond, int *size){  int rnd_wait_time;  pthread_mutex_lock(registration_mutex);  while(size == 0){  rnd_wait_time = generate_rnd_numb(WAIT_TIME)   1;  printf("Patient[%d] is waiting for an availabe desk.n",p-gt;thread_num);  sleepForMs(rnd_wait_time);  increase_meters(p);  checkForRestOrCafe(p);  pthread_cond_wait(register_cond,registration_mutex);  }  size--;  printf("Registration size:%dn",size);  pthread_mutex_unlock(registration_mutex);   }  

Комментарии:

1. Определите «не работает».

2. Я не могу получить тот же результат

3. Поскольку size это указатель на значение, которое вы хотите использовать, вам нужно будет использовать его правильно. Используйте *size вместо size разыменования указатель. Пожалуйста, повысьте уровень предупреждений вашего компилятора до максимума и исправляйте свой код до тех пор, пока все предупреждения и ошибки не исчезнут.