0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
|
|
1 | |
Объявление функции с массивом28.07.2016, 10:01. Показов 1372. Ответов 20
Метки нет (Все метки)
Сейчас задам очень странный вопрос)
Что это значит: int F1(char[]) не могу понять)) спасибо! Добавлено через 25 минут и вот ещё вопрос: a[i] += 'A' -'a'
0
|
28.07.2016, 10:01 | |
Ответы с готовыми решениями:
20
Объявление функции внутри функции. Keil4 объявление функции Объявление функции Объявление функции в C# |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
|
|
28.07.2016, 11:19 | 2 |
1. Ответ в названии темы.
F1 - функция, возвращающая int, параметр которой текстовый массив 2. 'A' -'a' - это разница между кодом символов верхнего и нижнего регистра. Однако, в кодовой таблице заглавные буквы расположены раньше, поэтому 'A' -'a' отрицательное. Т.е. a[i] += 'A' -'a' будет переводить от нижнего регистра к верхнему. Еще стоит обратить внимание, что массив a должен иметь тип unsigned char, иначе такое преобразование сработает только для букв латинского алфавита.
0
|
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
|
|
28.07.2016, 11:49 [ТС] | 4 |
Спасибо за помощь)
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
28.07.2016, 11:50 | 5 |
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
28.07.2016, 12:41 | 7 | |||||
text[0] . Почему если оба варианта происходит ошибка компилятора в выборе нужной функции для вызова - тут ответ http://www.quizful.net/interview/cpp/4vmrpY9End8Y . При передачи массива в функцию принимать обычный указатель мы теряем данные об размере как минимумP.S. HelicopterK52, хватит уже обижаться, пмс
0
|
28.07.2016, 12:51 | 8 | |||||
rikimaru2013, это Вы мне пруф привели или что? Вы меня удивляете.
у ТС: у Вас: Но даже в этом случае параметр имеет тип ссылки на массив, а не массив.
Как не обижаться, если Вы ерунду сморозили?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
28.07.2016, 13:01 | 9 | |||||
rikimaru2013, хочу заступиться за HelicopterK52.
Сигнатурка функции, котору дал автор, выглядит так: При этом HelicopterK52 на это сказал, что char[] в данном случае на самом деле char* .Так вот, он здесь абсолютно прав. Типы функций и типы массивов, будучи употребленными в декларации параметров функции преобразуются в указатель. Поэтому данные выражения истинны:
1
|
HelicopterK52
|
28.07.2016, 13:07
#10
|
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
28.07.2016, 13:15 | 11 |
С помощью данной особенности можно реализовать некоторые интересные проверки.
Пользуясь случаем, дам ссылку свою статью на затронутую тему (применительно к типам функций).
5
|
HelicopterK52
|
28.07.2016, 13:17
#12
|
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
28.07.2016, 14:06 | 13 |
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
28.07.2016, 14:14 | 14 | |||||
Это не трюк. Это возвращаемое значение функции.
Мы же говорим о типе параметра функции, и как этот тип в контексте параметра функции видоизменяется. Поэтому я и сравниваю в is_same два типа функций, которые параметром принимают массив и указатель, функцию и указатель на функцию, и эти типы оказываются равны. Ну можно написать по-другому (будет фактически тоже самое):
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
28.07.2016, 14:26 | 15 | |||||
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
28.07.2016, 14:31 | 16 |
тип функции, которая ничего не возвращает.
и принимает указатель на функцию, которая принимает double, и возвращает int.
1
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
28.07.2016, 14:41 | 17 |
Как зачем, чтобы показать, что происходит. Мне кажется, ты не на том внимание акцентируешь
На первый вопрос см. ответ hoggy.
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|||||||||||
28.07.2016, 14:53 | 18 | ||||||||||
А не за чем было меня запутывать))))
Почему не (псевдокод):
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
28.07.2016, 14:56 | 19 |
короче(!)
это такое сишное легаси. суть в том, что char[] в аргументах функций и char* это одно и тоже. первое выглядит как массив, но на самом деле это нефига не массив, а самый обычный указатель. сишка - язык раздолбаев.
2
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
28.07.2016, 15:02 | 20 |
Там была такая строка, именно как ты написал:
А вторая строка для того, чтобы показать, что это применимо не только к массивам, но и к функциям. Но ты похоже порыва образовательного не оценил, и вместо этого обвиняешь в запутывании И не стыдно?
1
|
28.07.2016, 15:02 | |
28.07.2016, 15:02 | |
Помогаю со студенческими работами здесь
20
Объявление функции Объявление функции Объявление функции Объявление функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |