Назначение optarg для int в C

Я пытаюсь присвоить int значение optarg, но компилятор выдает мне следующее предупреждение:

warning: assignment makes integer from pointer without a cast [enabled by default]

Я пытался привести Optarg как INT до назначения

n = (int) optarg;

но все равно получаю предупреждение:

warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

Я не уверен, что нужно сделать, прежде чем я смогу просто присвоить optarg целому числу, а затем распечатать его (пока).

int main (int argc, char *argv[])
{
  char c;
  int n;

  while ((c = getopt(argc, argv, "m:")) != -1) {
    switch (c) {
    case 'm':
      n = optarg;
      break;
    }
  }

  printf("%d\n", n);

  return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос