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

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

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

Структура-указатель-функция - C++

14.05.2013, 21:12. Просмотров 422. Ответов 9
Метки нет (Все метки)

Приветы. Как в функцию затащить указатель на конкретный элемент структуры, чтоб можно было например установить значение по умолчанию в прототипе, как для аргумента функции? Гугл не помог к сожалению.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура-указатель-функция (C++):

Структура и функция, возвращающая указатель на структуру - C++
Добрый вечер! В чем проявляется особенность функции, если мы даем ей тип от имени структуры? (или как правильно называется такое...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

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

Функция принимает указатель на void и возвращает указатель на int - C++
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Структура и указатель - C++
Прога написанна для примера #include <stdio.h> #include <string.h> struct data {int day; char month; ...

структура и указатель - C++
всем доброго времени суток! 1создать масив структур из использованием значений иницыалезаторов. использовать обычную адресацыю к...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
14.05.2013, 21:24 #2
faradej, так Вам надо элемент структуры передать в функцию или установить значения по умолчанию в шаблоне?
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
14.05.2013, 21:33  [ТС] #3
Передать указатель на элемента структуры в функцию + присвоить этому указателю значение по умолчанию там же.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
14.05.2013, 21:38 #4
C++
1
2
3
4
5
6
7
8
9
10
11
struct test
{
   int a;
};
void myFunc(int *a)
{
    a=10;
}
//---------------
test A;
myfunc(A.a);
Вы это хотели сделать?
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
14.05.2013, 21:52  [ТС] #5
Да. Благодарен. А не подскажете как массивный элемент передать?
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
14.05.2013, 21:53 #6
faradej, точно так же. Только добавьте еще один параметр, в котором будете передавать количество элементов.
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
15.05.2013, 01:41  [ТС] #7
В вызове функции амперсанд конфеты.нейм подсвечивает о несовместимости параметров, без этого аргумента нормально все.
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 <iostream>
#include <cstdlib>
using namespace std;
const int arsize = 30;
struct CandyBar{
    char name[arsize];
    float wes;
    int kall;
};
CandyBar konfeta={
    "jgiyu", 
    55, 
    99
};
 
 
void joker(CandyBar & konfeta, char *name[], int arsize, float *wes, int *kall);
int main()
{
    joker(konfeta, &konfeta.name, arsize, &konfeta.wes, &konfeta.kall);
    system ("pause");
    return 0;
}
void joker(CandyBar & konfeta, char *name[], int arsize, float *wes, int *kall)
{
    *name[30] = "Tra La La";
    *wes = 888;
    *kall = 999;
    cout << konfeta.kall << endl << konfeta.name << endl << konfeta.wes << endl;
};
Добавлено через 18 минут
невозможно преобразовать параметр 2 из "char (*)[30]" в "char *[]

Добавлено через 3 часа 20 минут
В чем же моя ошибка?
stima
463 / 312 / 26
Регистрация: 22.03.2011
Сообщений: 1,021
Завершенные тесты: 2
15.05.2013, 02:12 #8
char[] == char * const;

C++
1
joker(konfeta, &konfeta.name, arsize, &konfeta.wes, konfeta.kall);
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
15.05.2013, 02:47  [ТС] #9
Я решил это с помощью динамического массива вместо обычного, он тоже ведь по сути указатель на char. Сейчас другая проблема, не могу присвоить аргументам функции параметры по умолчанию.

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
33
34
35
36
37
#include <iostream>
#include <cstdlib>
using namespace std;
const int arsize = 30;
char *name = new char[arsize];
struct CandyBar{
    char *name;
    float wes;
    int kall;
};
CandyBar konfeta={
    "jgiyu", 
    55, 
    99
};
void joker(CandyBar & konfeta, char *name[], float *wes, int *kall);
 
 
 
int main()
{
    joker(konfeta, &konfeta.name , &konfeta.wes, &konfeta.kall);
    cout << "vne jokera: " << konfeta.name;
    delete [] name;
    system ("pause");
    return 0;
}
 
 
 
void joker(CandyBar & konfeta, char *name[], float *wes, int *kall)
{
    *name = "Qqqq";
    *wes = 888;
    *kall = 999;
    cout << konfeta.kall << endl << konfeta.name << endl << konfeta.wes << endl;
};
Добавлено через 15 минут
С указателями такое вобще можно делать?
stima
463 / 312 / 26
Регистрация: 22.03.2011
Сообщений: 1,021
Завершенные тесты: 2
15.05.2013, 03:12 #10
Может вы поначалу прочитаете про указатели?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 03:12
Привет! Вот еще темы с ответами:

Объясните пожалуйста, в чем здесь дело(структура и указатель) - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;windows.h&gt; using namespace std; struct pizza { double diameter; ...

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

Создать абстрактный тип данных (структура) — вектор, который имеет указатель на int и число элементов - C++
Создать абстрактный тип данных (структура) - вектор, который имеет указатель на int и число элементов. Определить функции: инициализации,...

Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов - C++
Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов. Определить функции: инициализации,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.05.2013, 03:12
Ответ Создать тему
Опции темы

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