32 / 30 / 4
Регистрация: 03.06.2010
Сообщений: 465
|
|||||||||||
1 | |||||||||||
Отличие char *argv[] от char ** argv13.07.2012, 19:15. Показов 7238. Ответов 25
Метки нет (Все метки)
Подскажите отличие между
0
|
13.07.2012, 19:15 | |
Ответы с готовыми решениями:
25
Что есть argc и **argv в функции int main(int argc, char **argv)? Определение размера char** argv Аргументы main(int argc, char *argv[]) что такое int argc, char *argv[] в качестве параметров главной (main) функции? |
32 / 30 / 4
Регистрация: 03.06.2010
Сообщений: 465
|
|
13.07.2012, 20:36 [ТС] | 3 |
а где отличия будут видны? Подскажи пожалуйста)
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
14.07.2012, 19:29 | 6 |
В данном примере не для чего. Дело в том, что имя массива само является указателем на первый элемент массива (в данном примере на char*), что и следует из записи: char* *argv. То есть, это: arrg[] и это: *arrg - одно и то же.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
14.07.2012, 19:35 | 7 |
alsav22, не одно и то же. Имя массива является константным указателем.
0
|
Нуб со стажем
36 / 34 / 10
Регистрация: 19.02.2012
Сообщений: 118
|
|
14.07.2012, 19:48 | 8 |
Оно не так уж и редко используется. Большинство программ используют аргументы командной строки.
А *nixах практически все программы
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
14.07.2012, 23:09 | 10 |
Ну говорить, что это прям одного и тоже не корректно, можно лишь утверждать, что поведение идентично.
1
|
16.07.2012, 08:14 | 13 |
alsav22, наоборот, они идентичны. Потому что когда в параметре процедуры описан массив без указания размерности (да даже если и с указанием), то он эквивалентен тому, что там описан указатель. Т.е. следующие записи эквивалентны
C void func1 (int *p) { *p = 0; p++; *p = 1; } void func2 (int p[]) { *p = 0; p++; *p = 1; }
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
16.07.2012, 14:02 | 14 | |||||
Просто указатель? Не константный? Иначе такое не проходило бы?
0
|
16.07.2012, 14:52 | 16 |
Просто указатель. Если явно написать const, то будет константный указатель. Т.е. эквивалентными являются:
C void func1 (const int *p) { int x, y; x = *p; p++; y = *p; } void func2 (const int p[]) { int x, y; x = *p; p++; y = *p; }
1
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
16.07.2012, 18:49 | 18 | |||||
Evg, это ведь указатель на константу а не константный указатель.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
16.07.2012, 19:01 | 20 |
alsav22, что я собственно и написал. В примере у Evg указатель на константу а не константный указатель.
Добавлено через 2 минуты Этим я показал константный указатель.
0
|
16.07.2012, 19:01 | |
16.07.2012, 19:01 | |
Помогаю со студенческими работами здесь
20
Подскажите пожалуйста с int main(int argc, char*argv[]) int main(int argc, char* argv[]) ? В чем отличие char* s от char *s В чем отличие двумерного массива типа char от массива указателей на char? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |