Для чего эта звездочка? - PullRequest
       1

Для чего эта звездочка?

1 голос
/ 15 февраля 2011

Я изучаю программирование на c и не понимаю, для чего эта звездочка в основном методе.

int main(int argc, char* argv[])

Ответы [ 6 ]

5 голосов
/ 15 февраля 2011

char* a; означает, что a является указателем на переменную типа char.

В вашем случае argv - это указатель на указатель (или даже несколько из них - он указан в argv в вашем случае) на переменную (ы) типа char. Другими словами, это указатель на массив (длиной argv) указателей на char переменных.

Вы даже можете написать свой код следующим образом: int main(int argc, char** argv) и на самом деле ничего не изменится, как только char* a будет совпадать с char a[].

2 голосов
/ 15 февраля 2011

Объявление char *argv[] объявляет argv как массив (неизвестного размера) указателя на char.

Для любого типа T объявление

T *p;

объявляет p как указатель на T. Обратите внимание, что * привязан к идентификатору, а не к типу;в объявлении

T *a, b;

только a объявлено как указатель.

2 голосов
/ 15 февраля 2011

Это означает, что argv - это массив символьных указателей.

0 голосов
/ 15 февраля 2011

Этот "*" здесь, конечно, указывает только указатель, чтобы поместить argv [] // переменное число значений аргумента // в место, которое он может уместиться.

Потому что вы неНе знаю, сколько параметров будет передавать пользователь, так как это argc [количество аргументов] и argv [значение аргумента].Но мы хотим выделить им место, где они могут поместиться, поэтому мы используем указатель без определенного определенного размера, этот указатель автоматически найдет и поместит в соответствующее место в памяти.

Надеюсь, это помогло, если это не такt Я буду рад помочь, просто дайте мне знать:)

0 голосов
/ 15 февраля 2011

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

В основном char argv [] является массивом символов, char * argv [] является указателем на массив символов.Так что здесь для представления нескольких строк, проще говоря!

Обратите внимание, что: char *argv[] эквивалентно char * * argv, поскольку char argv[] может быть представлено как char *argv.

Просто чтобы пойти дальше, вы удивитесь, что эти два выражения эквивалентны:

int a[5];
int 5[a];

Это потому, что массив целых чисел является указателем на набор целых чисел в памяти.Таким образом, a[1] можно представить как *(a + 1), a[2] как *(a + 2) и т. Д. Что эквивалентно *(1 + a) или *(2 + a).

В любом случае, указатели являются одним из наиболее важных иТрудно понять, когда вы начинаете программировать на C, поэтому я бы посоветовал вам серьезно взглянуть на это в Google!

0 голосов
/ 15 февраля 2011

Это означает указатель.char argv[] объявляет массив символов.char* argv[] объявляет массив символьных указателей или указателей на строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...