Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
#1

Функция с параметрами типа указатель на символ и ссылка на целое - C++

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

не могу разобратся с указателем на функцию
хотя вроде понял , но так как понял не работает
задание:
Составить описание : Функция с параметрами типа указатель на символ и
ссылка на целое, невозращающая значение:
функция с параметром , имеющим тип такого указателя:
функция , возращающая такой указатель:
Напишите определение функции , у которой параметр и возращаемое
значение имеют тип такого указателя. Подсказка: используйте typedef.

я написал:
C++
1
2
3
4
5
6
void func_1(char*,int&);
void (*f_p)(char*,int&);
f_p = &func_1;
void func_with_p(f_p* p);
f_p func_r();
f_p func_2(f_p* p);
мне отвечает:
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C4430: missing type
specifier - int assumed. Note: C++ does not support default-int
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C2373: 'f_p' :
redefinition; different type modifiers
1> c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(4) : see declaration of 'f_p'
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C2440: 'initializing' :
cannot convert from 'void (__cdecl *)(char *,int &)' to 'int'
1> There is no context in which this conversion is possible
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(6): error C2065: 'p' : undeclared
identifier
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(6): error C2182: 'func_with_p' :
illegal use of type 'void'
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(6): fatal error C1903: unable to
recover from previous error(s); stopping compilation
попробовал сделать через typedef :
C++
1
2
3
4
5
6
void func_1(char*,int&);
typedef void (*f_p)(char*,int&);
f_p = &func_1;
void func_with_p(f_p* p);
f_p func_r();
f_p func_2(f_p* p);
мне отвечает:
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C2513: 'void (__cdecl
*)(char *,int &)' : no variable declared before '='
можете еще обьяснить что происходит с f_p когда я использую для нее typedef.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 21:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция с параметрами типа указатель на символ и ссылка на целое (C++):

Используя указатель на переменную типа string, удалить последний символ этой переменной - C++
есть указатель на переменную string,нужно удалить последний символ этой переменной работая с указателем.Как это осуществить?Заранее...

Указатель или ссылка на указатель. В чем разница? - C++
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2() динамически выделить память и возвратить этот...

Дружественная функция шаблон и ошибка "Ссылка на неразрешенный внешний символ" - C++
#include <iostream> using namespace std; template<class T> class random; template<class T> void f(random<int>); ...

Шаблонная функция в простом классе и ошибка "Ссылка на неразрешенный внешний символ" - C++
файл: A.h class A { public: template<class T> T func(T); }; файл: A.cpp

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

Пользователь вводит целое число n и ДВА символа. Программа выводит на экран последовательно символ №1 и символ - C++
Пользователь вводит целое число n и ДВА символа. Программа выводит на экран последовательно символ №1 и символ №2 n-раз. ...

9
Kuzia domovenok
2125 / 1955 / 194
Регистрация: 25.03.2012
Сообщений: 6,804
Записей в блоге: 1
01.04.2012, 21:14 #2
Можно программу целиком увидеть? Потому, что все ошибки явно возникают из-за неуместного употребления имён.
C
1
2
3
4
5
6
7
8
9
10
11
12
void func_1(char*,int&);
int main(){
int x=0;
void (f_p*)(char*, int&);
fp=func_1;
f_p("Hello", x);
return 0;
}
 
void func_1(char* str, int& n){
 
}
0
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.04.2012, 21:17  [ТС] #3
Программу писал на visual c++ 10
могу скинуть весь проэкт, но по этой части это все
я изучаю книгу и по ней делаю задания, в том проэкте все мои задания сделаные
0
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
01.04.2012, 21:22 #4
C++
1
2
3
4
5
6
void func_1(char*,int&);
typedef void (*func_t)(char*,int&);
func_t f_p = &func_1;
void func_with_p(func_t p);
func_t func_r();
func_t func_2(func_t p);
1
Kuzia domovenok
2125 / 1955 / 194
Регистрация: 25.03.2012
Сообщений: 6,804
Записей в блоге: 1
01.04.2012, 21:26 #5
Ааа туплю туплю звезду же в определении надо впереди ставить!!
C++
1
2
3
4
int x=0;
    int (*f_p)(int);
    fp=func_1;
    f_p(10);
1
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.04.2012, 21:49  [ТС] #6
Можете обьяснить разницу

C++
1
2
typedef void (*func_t)(char*,int&);
void (*func_t)(char*,int&);
что происходит когда используется typedef
в обоих случаях funс_t будет указатель?
0
alex_x_x
бжни
2454 / 1659 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.04.2012, 21:59 #7
Цитата Сообщение от balrak Посмотреть сообщение
Можете обьяснить разницу

C++
1
2
typedef void (*func_t)(char*,int&);
void (*func_t)(char*,int&);
что происходит когда используется typedef
в обоих случаях funс_t будет указатель?
typedef определяет тип, второй вариант просто объявляет и определяет переменную
1
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
01.04.2012, 22:00 #8
Цитата Сообщение от balrak Посмотреть сообщение
в обоих случаях funс_t будет указатель?
только во 2м случае: func_t - переменная типа указатель на ф-ю.
в 1м же случае func_t - имя типа указателя на ф-ю.
typedef вводит новое имя (синоним) для типа (не для переменной).
1
Kuzia domovenok
2125 / 1955 / 194
Регистрация: 25.03.2012
Сообщений: 6,804
Записей в блоге: 1
01.04.2012, 22:05 #9
Цитата Сообщение от balrak Посмотреть сообщение
что происходит когда используется typedef
в обоих случаях funс_t будет указатель?
При чём тут вообще тайпдеф? Сначала прочитайте что такое тайпдеф, потом применяйте.
Тайпдеф определяет новое название для существующего типа. При чём используется, словно мы хотим объявить переменную с таким названием.
То есть так void (*func_t)(char*,int&) ты объявил указатель на функцию t и можешь использовать его.
А так typedef void (*func_t)(char*,int&); ты объявил новый тип данных func_t
И можешь использовать его как обычное название типа
например
C++
1
2
3
int x, y, z;//три переменных типа инт
func_t a, b, c;//три указателя на функцию, принимающую char* и int&
void (*func_t2)(char*,int&);//один указатель на функцию
1
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.04.2012, 22:54  [ТС] #10
Всем ограмное спасибо за помошь
0
01.04.2012, 22:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 22:54
Привет! Вот еще темы с ответами:

Преобразовать указатель одного типа в указатель другого. - C++
Всем привет. Мне нужно выполнить задание "Преобразовать указатель одного типа в указатель другого. " Что-то совсем не понимаю. Помогите...

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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