Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 25.04.2013
Сообщений: 67
1

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

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

Author24 — интернет-сервис помощи студентам
Приветы. Как в функцию затащить указатель на конкретный элемент структуры, чтоб можно было например установить значение по умолчанию в прототипе, как для аргумента функции? Гугл не помог к сожалению.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2013, 21:12
Ответы с готовыми решениями:

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

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

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

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

9
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
14.05.2013, 21:24 2
faradej, так Вам надо элемент структуры передать в функцию или установить значения по умолчанию в шаблоне?
1
0 / 0 / 1
Регистрация: 25.04.2013
Сообщений: 67
14.05.2013, 21:33  [ТС] 3
Передать указатель на элемента структуры в функцию + присвоить этому указателю значение по умолчанию там же.
0
244 / 245 / 38
Регистрация: 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);
Вы это хотели сделать?
1
0 / 0 / 1
Регистрация: 25.04.2013
Сообщений: 67
14.05.2013, 21:52  [ТС] 5
Да. Благодарен. А не подскажете как массивный элемент передать?
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
14.05.2013, 21:53 6
faradej, точно так же. Только добавьте еще один параметр, в котором будете передавать количество элементов.
0
0 / 0 / 1
Регистрация: 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 минут
В чем же моя ошибка?
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
15.05.2013, 02:12 8
char[] == char * const;

C++
1
joker(konfeta, &konfeta.name, arsize, &konfeta.wes, konfeta.kall);
0
0 / 0 / 1
Регистрация: 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 минут
С указателями такое вобще можно делать?
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
15.05.2013, 03:12 10
Может вы поначалу прочитаете про указатели?
0
15.05.2013, 03:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2013, 03:12
Помогаю со студенческими работами здесь

Структура и указатель
Прога написанна для примера #include &lt;stdio.h&gt; #include &lt;string.h&gt; struct data {int...

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

Как структура может содержать указатель на эту же структуру?
node* next что заполняется в этот next? то есть какой указатель в неё получается? не понимаю...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru