Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 21:53   #1
Sbenya
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 16
Вопрос указатель на функию..Кто шарит

Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//#include <ctype.h>
void ch(char*a, int(*len)(const char *));
	 int main(void)
{char s1[80];
int(*p)(const char *);
p=strlen;
gets(s1);
ch(s1,p);
return 0;
}
void ch(char*a, int(*len)(const char *))
{
if((*len)(a>10)) printf("Больше");
printf("Меньше");
}
Выдает ошибку с If-ми и с параметрами функии...что не правельно кто может обьяснить?

Последний раз редактировалось Stilet; 11.07.2011 в 10:56.
Sbenya вне форума Ответить с цитированием
Старый 10.07.2011, 22:07   #2
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию

Код:
void ch(char*a, int(*len)(const char *))
{
if(len(a)>10) 
printf("Больше");
else
printf("Меньше");
}
Это ты хотел?
-LeV- вне форума Ответить с цитированием
Старый 10.07.2011, 22:52   #3
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
void ch(char*a, int(*len)(const char *))
{
if((*len)("a>10")) printf("Больше");
printf("Меньше");
}
скорее вот так

Последний раз редактировалось Stilet; 11.07.2011 в 10:56.
Hemul вне форума Ответить с цитированием
Старый 10.07.2011, 23:21   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Hemul
отсыпь, друг
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 10.07.2011, 23:26   #5
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
void ch(char*a, int(*len)(const char *))
{
if((*len)("a>10")) printf("Больше");
printf("Меньше");
}

скорее вот так
глупость это
во-первых, не скомпилируется
во-вторых, я вообще не понял что ты этим кодом пытался добиться
-LeV- вне форума Ответить с цитированием
Старый 11.07.2011, 00:36   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2-LeV-
скомпилируется
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 11.07.2011, 00:43   #7
Sbenya
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от -LeV- Посмотреть сообщение
Код:
void ch(char*a, int(*len)(const char *))
{
if(len(a)>10) 
printf("Больше");
else
printf("Меньше");
}
Это ты хотел?
Ну типа того...ну я не понимаю....где в твоем случаи робота с указателе?и когда я скомпелирывал твой вариант все ок..правда еще проблема с формальной переменой на указатель...Что то можеш сказать по этому поваду?

Последний раз редактировалось Sbenya; 11.07.2011 в 00:48.
Sbenya вне форума Ответить с цитированием
Старый 11.07.2011, 00:48   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Полный код и текст ошибки в студию. Так вроде должно работать:
Код:
int mylen(const char* s)
 {
 return strlen(s);
 }
void ch(char*a, int(*len)(const char *))
 {
 if(len(a)>10) 
  printf("Больше");
 else
  printf("Меньше");
 }
void f()
 {
 ch("This is a string", mylen);
 }
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 11.07.2011, 00:52   #9
Sbenya
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
void ch(char*a, int(*len)(const char *))
{
if((*len)("a>10")) printf("Больше");
printf("Меньше");
}

скорее вот так
в твоем случаи болие понятно что идет робота с указателем...ну меня смущает почему вырожение "a>10" в кавичках???так можно разве????и да кстати тотже вопрос...какая проблема с указателем как формальная переменая?
Sbenya вне форума Ответить с цитированием
Старый 11.07.2011, 00:59   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Сообщение от Sbenya Посмотреть сообщение
в твоем случаи болие понятно что идет робота с указателем...ну меня смущает почему вырожение "a>10" в кавичках???так можно разве????и да кстати тотже вопрос...какая проблема с указателем как формальная переменая?
Не обращайте внимания, там вообще бред полный написан. Что касается указателей на функцию, то взятие адреса и разыменовывание можно в случае с функциями опускать. Ниже есть две пары эквивалентных выражений, иллюстрирующих это:
Код:
(*f1)(x);
f1(x);

void (*g)(int) = f2;
void (*h)(int) = &f2;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребят, кто шарит в С++ загляните... брилиант Помощь студентам 7 04.05.2011 16:31
Кто шарит в 3D, ткните в литературу mutabor Свободное общение 0 03.03.2011 18:19
Кто-нибудь шарит в Common Lisp? Нужна помощь. IGREK Помощь студентам 5 08.06.2008 23:46
Кто шарит в PHP Simply-Art PHP 3 20.05.2007 21:01