Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/36: Рейтинг темы: голосов - 36, средняя оценка - 4.89
proger2030
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
1

Массив указателей на функцию - разобрать строку кода

26.02.2012, 13:55. Просмотров 6836. Ответов 17
Метки нет (Все метки)

Есть массив указатель на функцию
C
1
2
3
void f1(int);
void f2(int);
void f3(int);
C
1
void (*fArray[3](int)= {f1, f2, f3};
Что означает (int) который находится после имени массива?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 13:55
Ответы с готовыми решениями:

Разобрать строку кода
Знатоки С, подскажите пожалуйста, как правильно прокоментировать такой код: FILE *fin, *fout;...

Разобрать строку кода
Здравстуйте, с Наступившим Новым годом. Вот разбираюсь потихоньку один исходник, попутно вспоминаю...

Разобрать строку кода
Вот попалась мне на глаза вот такая строка RECORD_MUTE = 1 << 3 Подскажите что здесь...

Разобрать строку кода
Ребята, помогите пожалуйста!!! Буду очень благодарен всем откликнувшимся. Задача состоит в...

Разобрать строку кода
#include <stdio.h> #include <stdlib.h> long long int quad(long long int x){ return x * x;...

17
Jupiter
Каратель
Эксперт С++
6573 / 3994 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
26.02.2012, 14:01 2
то что аргумент функции имеет тип int
0
proger2030
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
26.02.2012, 14:15  [ТС] 3
Цитата Сообщение от Jupiter Посмотреть сообщение
то что аргумент функции имеет тип int
Я по провал опустит этот тип программа работает. Значить это не обязательный параметр ?
0
fasked
Эксперт С++
4997 / 2576 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.02.2012, 14:18 4
Цитата Сообщение от proger2030 Посмотреть сообщение
Я по провал опустит этот тип программа работает. Значить это не обязательный параметр ?
Нет. Это значит, что Ваша программа неправильная.
0
proger2030
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
26.02.2012, 14:20  [ТС] 5
Цитата Сообщение от fasked Посмотреть сообщение
Нет. Это значит, что Ваша программа неправильная.
почему тогда нету никаких предупреждении и ошибок со стороны компилятора ? (Dev C++ 4 .9)
0
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
26.02.2012, 14:38 6
proger2030, потому что программа может быть неправильной не только тогда, когда об этом может сообщить компилятор.
0
Байт
Эксперт C
20274 / 12841 / 2686
Регистрация: 24.12.2010
Сообщений: 26,811
26.02.2012, 15:20 7
Что ж, получается что такой код недопустим ?
C
1
2
3
4
void f1(int);
void f2(char);
void f3(double);
void *fArray[3]= {f1, f2, f3};
0
NoMasters
Псевдослучайный
1912 / 1123 / 90
Регистрация: 13.09.2011
Сообщений: 3,182
26.02.2012, 16:02 8
Байт, допустим, в С можно неявно кастовать к void* любой указатель.
0
proger2030
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
26.02.2012, 16:24  [ТС] 9
Цитата Сообщение от NoMasters Посмотреть сообщение
Байт, допустим, в С можно неявно кастовать к void* любой указатель.
Где можно про это прочитать ? Я не нашел гуглил
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
26.02.2012, 16:31 10
proger2030, про приведение типов почитайте.
0
Avazart
Эксперт С++
7802 / 5701 / 561
Регистрация: 10.12.2010
Сообщений: 25,981
Записей в блоге: 17
26.02.2012, 16:42 11
C++
1
void f1(int);
равносильно
C++
1
void f1(int n);
Вот только такая функция бессмысленна, если только не использует глобальные переменные.

А можно полностью функцию?
0
NoMasters
Псевдослучайный
1912 / 1123 / 90
Регистрация: 13.09.2011
Сообщений: 3,182
26.02.2012, 16:48 12
Лучший ответ Сообщение было отмечено как решение

Решение

Avazart, попробуй сделать вопрос осмысленным и спросить ещё раз.
3
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
26.02.2012, 16:56 13
Цитата Сообщение от Avazart Посмотреть сообщение
Вот только такая функция бессмысленна
Ага, бессмысленна. Потому что это даже не функция, а только заголовок. А остальную часть сообщения не понял за кривостью формулировки.
0
Байт
Эксперт C
20274 / 12841 / 2686
Регистрация: 24.12.2010
Сообщений: 26,811
26.02.2012, 17:30 14
Цитата Сообщение от NoMasters Посмотреть сообщение
Байт, допустим, в С можно неявно кастовать к void* любой указатель.
я к тому, что функции имеют разные типы аргументов.
0
Avazart
Эксперт С++
7802 / 5701 / 561
Регистрация: 10.12.2010
Сообщений: 25,981
Записей в блоге: 17
26.02.2012, 18:05 15
C++
1
void f1(int);
-ничего не возвращает, а также ей не передается параметр по ссылке или указателю, а значит она ничего в программе не меняет.
0
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
26.02.2012, 18:14 16
Avazart, ага, т.е. функция, которая "ничего в программе не меняет", бесполезная? Как вам такой вариант?
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
#include <iostream>
#include <fstream>
 
unsigned long long fact(unsigned long long number)
{
    if (number < 2)
        return 1;
    
    for (unsigned long long x = number - 1; x > 1; --x)
        number *= x;
    
    return number;
}
 
void absolutely_useless_function(int number)
{
    std::ofstream("result.txt") << fact(number);
}
 
int main()
{
    absolutely_useless_function(5);
    
    return 0;
}
0
Avazart
Эксперт С++
7802 / 5701 / 561
Регистрация: 10.12.2010
Сообщений: 25,981
Записей в блоге: 17
26.02.2012, 19:24 17
Согласен ступил
0
NoMasters
Псевдослучайный
1912 / 1123 / 90
Регистрация: 13.09.2011
Сообщений: 3,182
26.02.2012, 20:24 18
Байт, код от этого не становится невалидным. Может быть ты потом по неким сторонним признакам кастанёшь и вызовешь как надо.
0
26.02.2012, 20:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 20:24

Разобрать строку кода (указатели)
Доброй ночи. подскажите что делает этот синтаксис? *(int * const)(0х7a9) = 0xaa55;

Указатели - разобрать строку кода
1) int (*p); Как понять такую строку кода? И как потом с этим работать? Поподробнее если можно....

Указатели - разобрать строку кода
int a={}; max=*(*(a+i)+j); как называется этот элемент правильно *(*(a+i)+j) ?


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

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

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