Оператор разыменования при использовании с argv [i] - PullRequest
0 голосов
/ 03 февраля 2020
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    if (isdigit(*argv[1]))
    {
        int x = atoi(argv[1]);
        printf("%d\n", x);
    }
    return 0;
}

Я не понимаю, зачем знак звездочки при использовании isdigit() и почему знак звездочки не нужен при использовании atoi()

1 Ответ

4 голосов
/ 03 февраля 2020

argv[1] - строка, поэтому *argv[1] - первый символ в строке. То же самое, что и argv[1][0]. Вызов isdigit(*argv[1]) поэтому проверяет, является ли первый символ в строке di git.

Этот тест используется для проверки, является ли аргумент (вероятно) числом, после чего передается вся строка в atoi(), чтобы получить все значение.

...