Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 137
#1

Передача параметров в функцию - C++

06.01.2013, 22:48. Просмотров 559. Ответов 9
Метки нет (Все метки)

Добрый вечер
Не получается передать в функцию массив
выдает ошибку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cstdio>
 
struct morse_code
{
    const char* morse;
    char symbol;
};
 
struct morse_code morse_char[] = 
{
    {".-",    'a'},
    {"-...",  'b'},
    {"-.-.",  'c'},
    {"-..",   'd'},
    {".",     'e'}
};
 
void MorseOut(char array);
 
main()
{
    int i = 3
    MorseOut(morse_char[i])
    return 0;     
}
 
void MorseOut(char array)
{
   printf("%c %s", array.symbol, array.morse);
}
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 22:48     Передача параметров в функцию
Посмотрите здесь:

Передача параметров в функцию - C++
Толи я чего-то туплю, толи всё же в мейн ошибка. Итак: есть функция, которая должна сообщать о результатах поиска изменением переменных...

передача параметров в функцию - C++
Здарвствуйте! Неделю изучаю С++, и в книге по которой изучаю сказано: &quot;Передавать параметры по значению только при необходимости и...

Передача параметров в функцию - C++
Можно ли сделать так, чтобы при совпадении переменных в функцие и основной программе, значения изменялись и в основной программе? И еще,...

Передача параметров в функцию - C++
Люди помогите, пожалуйста. Есть такая простая задачка: В одномерном массиве, состоящем из n элементов вычислить произведение...

Передача параметров в функцию - C++
void f(int a) ; // передача по значению void f(int *a);//передача по ссылке void f(int &amp;a) ; // а если так написано - что это...

Передача параметров в функцию - C++
Как понять , что передаётся в функцию при такой записи : void Fun(str* &amp;r) при этом есть такие данные: struct str {int b; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buildog
40 / 40 / 2
Регистрация: 29.04.2012
Сообщений: 185
06.01.2013, 23:22     Передача параметров в функцию #2
По твоему коду получается, что ты передаешь элемент Array типа char, а чтобы передать массив, надо написать
void MorseOut(char *array)
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 137
06.01.2013, 23:34  [ТС]     Передача параметров в функцию #3
По твоему коду получается, что ты передаешь элемент Array типа char, а чтобы передать массив, надо написать
void MorseOut(char *array)
Исправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cstdio>
 
struct morse_code
{
    const char* morse;
    char symbol;
};
 
struct morse_code morse_char[] = 
{
    {".-",    'a'},
    {"-...",  'b'},
    {"-.-.",  'c'},
    {"-..",   'd'},
    {".",     'e'}
};
 
void MorseOut(char *array);
 
main()
{
    int i = 3
    MorseOut(morse_char[i])
    return 0;     
}
 
void MorseOut(char *array)
{
   printf("%c %s", array.symbol, array.morse);
}
Пишет ошибки:
In function `void MorseOut(char*)':
68 cannot convert `morse_code' to `char*' for argument `1' to `void MorseOut(char*)'
85 `symbol' has not been declared
85 request for member of non-aggregate type before ',' token
85 `morse' has not been declared
85 request for member of non-aggregate type before ')' token
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
07.01.2013, 00:10     Передача параметров в функцию #4
Помоему должно быть так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <cstdio>
 
struct morse_code
{
    const char* morse;
    char symbol;
};
 
morse_code morse_char[] = 
{
    {".-",    'a'},
    {"-...",  'b'},
    {"-.-.",  'c'},
    {"-..",   'd'},
    {".",     'e'}
};
 
void MorseOut(morse_code code);
 
int main()
 
{
    int i = 3;
    MorseOut(morse_char[i]);
    getchar();
    return 0;     
}
 
void MorseOut(morse_code code)
{
    printf("%c %s", code.symbol, code.morse);
}
А еще лучше
C++
1
void MorseOut(const morse_code& code)
Добавлено через 21 минуту
miragex,
в вашем случае, если я правильно понял задачу, в функцию MorseOut следовало передавать не массив, а отдельный символ.

Вот вариант кода, который печатает всю таблицу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdafx.h>
#include <cstdio>
 
struct morse_code
{
    const char* morse;
    char symbol;
};
 
morse_code morse_char[] = 
{
    {".-",    'a'},
    {"-...",  'b'},
    {"-.-.",  'c'},
    {"-..",   'd'},
    {".",     'e'}
};
 
void printMorseTable(morse_code* const CodeTable, const int TableLength);
 
int main()
{
    printMorseTable(morse_char, 5);
    getchar();
    return 0;     
}
 
void printMorseTable(morse_code* const CodeTable, const int TableLength)
{
    for (int i=0; i<TableLength; i++)
        printf("%c %s \n", CodeTable[i].symbol, CodeTable[i].morse);
}
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 137
07.01.2013, 00:34  [ТС]     Передача параметров в функцию #5
Цитата Сообщение от Nagdiel Посмотреть сообщение
void printMorseTable(morse_code* const CodeTable, const int TableLength)
Поясни пожалуйста как это понять morse_code* const CodeTable
и почему const int TableLength а не просто int TableLength

Спасибо
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.01.2013, 00:39     Передача параметров в функцию #6
C++
1
void printMorseTable(morse_code* const CodeTable, const int TableLength)
константные это для того, чтобы аргументы в теле функции не смогли поменять.
сигнатуры функции при этом вроде бы такие же, как и в случае неконстантных аргументов. хотя могу ошибаться.
ну и если быть до конца параноиком, то нужно передавать константный указатель на константу, чтобы не только указатель не менялся, но и то, на что он указывает:
C++
1
void printMorseTable(const morse_code* const CodeTable, const int TableLength)
ну и более встречаемый вариант:
C++
1
void printMorseTable(const morse_code* CodeTable, int TableLength)
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
07.01.2013, 00:46     Передача параметров в функцию #7
DU, спасибо, что напомнили вариант
C++
1
void printMorseTable(const morse_code* const CodeTable, const int TableLength)
Цитата Сообщение от DU Посмотреть сообщение
и если быть до конца параноиком
Да,да... это верно, но указывая const, не только себя страхуем, а еще показываем другим программистам, которые будут использовать эту функцию, что она не изменит данные.
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 137
07.01.2013, 00:50  [ТС]     Передача параметров в функцию #8
Правильно я Вас понял:
Если мы хотим передать в функцию массив то надо написать
Код
void Funktion(const Array* const ArrayFunct)
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.01.2013, 00:51     Передача параметров в функцию #9
C++
1
void printMorseTable(morse_code* const CodeTable, const int TableLength)
такой вариант как раз таки ничего не показывает относительно неизменяемости того, на что указывает указатель.
поэтому нужно так:
C++
1
void printMorseTable(const morse_code* CodeTable, int TableLength)
ну а докидывание констант к аргументам - это я редко где встречал.

Правильно я Вас понял:
Если мы хотим передать в функцию массив то надо написатьКод Code
void Funktion(const Array* const ArrayFunct)
помимо указателя на начало массива, нужно еще и размер массива передавать.
со строчками это не делается, т.к. там конец массива определяется нулевым символом. для массивов других типов нужно размер еще передавать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2013, 00:55     Передача параметров в функцию
Еще ссылки по теме:

Передача параметров в функцию - C++
Кто может подсказать как работает метод __fastcall.И как связан стэк и управление им в с++(желательно на Visual C++.NET

Передача параметров в коллбэк функцию - C++
Есть библиотека для ардуино, таймеры с вызовом функций. Подскажите как добавить возможность пtредачи параметров? ...

Передача параметров в функцию WndProc - C++
Начал осваивать WinAPI и столкнулся со следующей проблемой - необходимо передать в качестве параметров некоторые переменные в функцию...

Передача параметров в функцию по адресу - C++
Привет! Помогите, пожалуйста, исправить ошибку. Конкретного задания нет, это пример передачи параметров в функцию по адресу. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
07.01.2013, 00:55     Передача параметров в функцию #10
Это справедливо, если ArrayFunct массив элементов типа Array и данные не будут меняться внутри функции
Yandex
Объявления
07.01.2013, 00:55     Передача параметров в функцию
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru