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

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

Войти
Регистрация
Восстановить пароль
 
lion_wine
8 / 8 / 0
Регистрация: 08.03.2014
Сообщений: 101
#1

Передача char в функцию - C++

27.04.2014, 00:23. Просмотров 833. Ответов 13
Метки нет (Все метки)

Привет всем! Помогите, что неправильно: есть функция
C++
1
2
3
4
5
6
    void send_new_object(char *g, char *h, int j)
    {
        char name_nach_punkta = *g;
        char name_kon_punkta = *h;
        nomer_marshrouta = j;
    }
в которую посылается
C++
1
2
3
4
5
char add_name_nach_punkta[30];
    char add_name_kon_punkta[30];
    int add_nomer_marshrouta;
...
send_new_data(add_name_nach_punkta, add_name_kon_punkta, add_nomer_marshrouta);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2014, 00:23     Передача char в функцию
Посмотрите здесь:

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

Передача в функцию массива char - C++
Есть функция : char f1(const char *str); Мне нужно её вызвать . Делаю так: char s; s="abcd"; // ошибка: invalid...

Передача в функцию unsigned char [ ] - C++
Заполняю массив unsigned char sizeBuf; for (int i = 0; i < 4; i++){ sizeBuf =...

Передача FILE и char[x] в функцию - C++
Собственно есть такой кусок кода: int Parser(int n, int value) { FILE *fp = fopen("../../DB.txt", "r"); char buffer; ...

Передача массива типа char в функцию - C++
Не пойму в чем ошибка, выдает что ошибка в типе char. Объясните пожалуйста что не так. int min() { char ar =...

Передача массива Char в функцию. Как быть? - C++
Столкнулся вот с такой проблемой, что #include <iostream> #include <fstream> #include <Windows.h> #include <conio.h> using...

Передача char* из функции - C++
Здравствуйте! Функция считывает из Settings.ini данные. Из файла данные считываются правильно! Но далее, в main я не могу правильно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
27.04.2014, 00:25     Передача char в функцию #2
lion_wine, вы пытаетесь присвоить одной переменной значение всего массива.Либо копируйте массив,либо работайте с указателями.
Avazart
Эксперт С++
7116 / 5293 / 273
Регистрация: 10.12.2010
Сообщений: 23,407
Записей в блоге: 17
27.04.2014, 00:26     Передача char в функцию #3
C++
1
2
3
4
5
6
void send_new_object(char *g, char *h, int j)
    {
        char name_nach_punkta = *g;
        char name_kon_punkta = *h;
        nomer_marshrouta = j;
    }
Смысл такой ф-ции?
lion_wine
8 / 8 / 0
Регистрация: 08.03.2014
Сообщений: 101
27.04.2014, 00:37  [ТС]     Передача char в функцию #4
а разве указатель уже не даст возможности обращаться к другим участкам памяти? а как передать весь массив?

Добавлено через 1 минуту
забыл дописать
C++
1
2
3
    char name_nach_punkta[30];
    char name_kon_punkta[30];
    int nomer_marshrouta;
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
27.04.2014, 00:55     Передача char в функцию #5
lion_wine, вы и передаете весь массив.Ошибка в другом.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
27.04.2014, 01:02     Передача char в функцию #6
S_el, не совсем, он передает указатель, к которому был автоматически приведен массив.
lion_wine, тут надо добавить, что массивы нельзя передавать по значению. Потому что они не объекты первого класса (по историческим причинам). Поэтому обычно массивы копируют поэлементно; т.е. указатель + размер и копия (функции strcpy, strncpy, memcpy, std::copy и т.п.) в другой массив.
Чтобы передать массив целиком, как объект, можно использовать, например, std::array (С++11) или эквивалентный подход с собственным типом.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 01:03     Передача char в функцию #7
Цитата Сообщение от lion_wine Посмотреть сообщение
забыл дописать
Это где объявляется?
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
27.04.2014, 01:06     Передача char в функцию #8
Цитата Сообщение от DrOffset Посмотреть сообщение
S_el, не совсем, он передает указатель, к которому был автоматически приведен массив.
Фраза "передаете весь массив" намного более понятна,чем передача указателя.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
27.04.2014, 01:17     Передача char в функцию #9
Цитата Сообщение от S_el Посмотреть сообщение
Фраза "передаете весь массив" намного более понятна,чем передача указателя.
Если ты знаешь что за ней стоит, то да. Но лично мне показалось, что у автора как раз вся проблема из-за того, что он думал, что может передать "весь массив" разом.
konstantin vl
1 / 1 / 0
Регистрация: 10.03.2013
Сообщений: 59
27.04.2014, 02:59     Передача char в функцию #10
C++
1
2
3
4
5
6
7
8
void send_new_object(char *g, char *h, int j)
    {
         char name_nach_punkta[strlen(g) + 1];
        strcpy(name_nach_punkta, g);
        char name_kon_punkta[strlen(h) + 1];
        strcpy(name_kon_punkta, h);
        nomer_marshrouta = j;
    }
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 11:38     Передача char в функцию #11
Цитата Сообщение от konstantin vl Посмотреть сообщение
C++
1
2
3
4
char name_nach_punkta[strlen(g) + 1];
...
char name_kon_punkta[strlen(h) + 1];
...
Смысл объявления локальных массивов?
konstantin vl
1 / 1 / 0
Регистрация: 10.03.2013
Сообщений: 59
27.04.2014, 22:58     Передача char в функцию #12
Ты в аргументе передаешь целый массив, а указатель не указывает на целый массив он указывает только на первый элемент.
C++
1
2
char name_nach_punkta = *g;
        char name_kon_punkta = *h;  // здесь ты присваиваешь первый элемент.
Rioter
1 / 1 / 0
Регистрация: 27.04.2014
Сообщений: 19
27.04.2014, 23:38     Передача char в функцию #13
Добавлено через 4 минуты
C++
1
2
3
4
5
6
    void send_new_object(char *g, char *h, int j)
    {
        char name_nach_punkta = *g;
        char name_kon_punkta = *h;
        nomer_marshrouta = j;
    }
Здесь вы пытаетесь присвоить char name_nach_punkta содержимое первого элемента из указателя g и так же с char name_kon_punkta = *h;

Добавлено через 5 минут
Как же объяснить.... Когда вы пишите название массива ( massive_name ), программа воспринимает его как адрес первого элемента массива в оперативной памяти, а когда рядом указываете номер элемента( massive_name[number_of_element] ) переходит относительно этого адреса на number_of_element шагов.

Добавлено через 3 минуты
следовательно, принимающая ф-ция должна записать в указатель адрес первого элемента массива и относительно этого указателя вызывать элементы(как я описал в своем примере кусков кода). Извините если где-то ошибся, но вроде все правильно.

Добавлено через 8 минут
Вот полный рабочий пример написал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
void func(char * mass, int n){
    for(int i=0;i<n;i++){
        cout<<mass[i];
    }
}
 
int main(){
    char massive[64]="Example";
    func(massive,64);
    system("pause");
    return 0;
}
Добавлено через 2 минуты
А вот если надо передать один конкретный знак:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
void func(char char1){
    cout<<char1;
}
 
int main(){
    char massive[64]="Example";
    func(massive[0]);
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 02:03     Передача char в функцию
Еще ссылки по теме:

Передача символьного массива char - C++
Привет всем. Подскажите пожалуйста. Есть функция в DLL. extern &quot;C&quot; __declspec(dllexport) void TestFan(char *bUUID,char *bName) { ...

Передача char массива в MessageBox - C++
Добрый день господа. Не могу решить проблему. Пытаюсь обработать сообщение WM_MOVE и передать координаты окна в MessageBox. Но не знаю как...

Передача в функции массивов типа char - ошибка - C++
Мне нужно передать в функцию 2 массива типа char (не string)и сделать в функции некоторую их обработку. Функция типа void. Но почему-то...

Передать массив char, в функцию - C++
Добрый день, не понемаю как можно в собственную функцию передать массив char. Собственно есть 2 примера, можете подсказать правильные или...

Исправить функцию GET для типа char - C++
Надо исправить функция GET для типа char, не могу понять,почему не выводит. #include &lt;iostream&gt; #include&lt;conio.h&gt; using...


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

Или воспользуйтесь поиском по форуму:
konstantin vl
1 / 1 / 0
Регистрация: 10.03.2013
Сообщений: 59
28.04.2014, 02:03     Передача char в функцию #14
alsav22, а вдруг его функция изменит исходное значение а он этого не хочет, можно конечно поставить const прочесть весь массив через указатель до \0 , но лучше все же сначала объяснить автору как это работает.
Yandex
Объявления
28.04.2014, 02:03     Передача char в функцию
Ответ Создать тему
Опции темы

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