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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
#1

ifdef и Ко, указатели в фунциях - C++

16.07.2010, 10:24. Просмотров 2688. Ответов 21
Метки нет (Все метки)

1.как используются ifdef и endif
2. как реализоввать, ну например, такое:
C++
1
int myFunc(int *one, int *two, int *three)
куда описание этих указателей засунуть и как, а еще как сделать указатели на строки в функциях

Добавлено через 44 секунды
и чуть не забыл
3.что такое pragma
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 10:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос ifdef и Ко, указатели в фунциях (C++):

Директива #ifdef _DEBUG - C++
Добрый день, возникла следующая проблема: при переключении конфигурации Debug / Release директива #ifdef _DEBUG перестала реагировать на...

Избавляемся от #ifdef DEBUG - C++
Доброго времени суток. В своем проекте для отладки использую: #define DEBUG ... ... ... #ifdef DEBUG std::cout << index...

#ifdef _WIN32 что это? - C++
возник вопрос с кодом.с си и с++ не знаком.пожалуйста объясните что тут происходит? #ifdef _WIN32 #include <windows.h> ...

Что такое __SC__ в #ifdef? - C++
В одном из исходников есть такой код #ifdef __SC__ typedef long long LONGLONG; #else typedef __int64 LONGLONG; #endifИ такой (часть...

Команды #ifndef #ifdef и #endif - C++
Помогите разобраться с командами #ifndef #endif и #ifndef в книге все как то не понятно объяснено или же лучше если у кого то есть видео на...

Корректность использования #ifdef для предотвращения компиляции - C++
Здравствуйте! Есть шаблон Vector. Он определен в файле vector.hpp. Для выноса кода шаблона в отдельный файл я использовал метод...

21
CyBOSSeR
Эксперт С++
2309 / 1682 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 10:27 #2
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
1.как используются ifdef и endif
По данному вопросу (и не только) есть прекрасный FAQ от Evg'a: Препроцессорные директивы в C/C++ (#include, #define и прочее).
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
2. как реализоввать, ну например, такое:
C++
1
int myFunc(int *one, int *two, int *three)
куда описание этих указателей засунуть и как, а еще как сделать указатели на строки в функциях
Тебе самому понятен вопрос, который ты задал?
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 10:31  [ТС] #3
я то, конечно, понял..щас попробую объяснить
есть функция, описанная выше...указатели должны же на что то указывать, где разместить то, куда они должны указывать и как
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 10:40 #4
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
я то, конечно, понял..щас попробую объяснить
есть функция, описанная выше...указатели должны же на что то указывать, где разместить то, куда они должны указывать и как
вот небольшой пример...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int myFunc(int* a, int* b, int* c)
{
    *a=*c;
    *c=*b;
    *b=19;
    return 0;
}
 
int main()
{
    int a=4, b=5, c=6;
    std::cout << "Before:" << std::endl;
    std::cout << a << "\t" << b << "\t" << c << std::endl;
    myFunc(&a, &b, &c);
    std::cout << "After:" << std::endl;
    std::cout << a << "\t" << b << "\t" << c << std::endl;
    return EXIT_SUCCESS;
}
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 14:10  [ТС] #5
спасибо
C++
1
int myFunc(int* a, int* b, int* c)
а теперь вместо int'ов нужео что то поставить чтобы получился указатель на строку, при том все три переменных указатели на строки
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 14:13 #6
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
а теперь вместо int'ов нужео что то поставить чтобы получился указатель на строку, при том все три переменных указатели на строки
Вместо int* ставь char* (с модификатором const, если значение строки не меняется внутри функции)
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 14:14  [ТС] #7
а если строка вводится пользователем?
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 14:19 #8
Даже если строка вводится пользователем
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 14:23  [ТС] #9
а можно ли создать указатель на функцию и использовать его в другой функции?
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 14:24 #10
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
а можно ли создать указатель на функцию и использовать его в другой функции?
Можно
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 14:28  [ТС] #11
а можете привести примерчик?
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 14:44 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
int add(int a, int b)
{
    return a+b;
}
 
int operation(int a, int b, int (*ptr)(int, int))
{
    return ptr(a, b);
}
 
int main(void)
{
    int (*pfunc)(int, int) = &add;           //Указатель на функцию add
    std::cout << operation(4, 6, pfunc) << std::endl;//передается функции operation
    system("pause");
    exit(EXIT_SUCCESS);
}
Добавлено через 9 минут
Можно упростить предыдущий пример, используя ключевое слово typedef:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
typedef int (*funcPtr)(int, int);//Определяем псевдоним для указателя на функцию
 
int add(int a, int b)
{
    return a+b;
}
 
int operation(int a, int b, funcPtr ptr)
{
    return ptr(a, b);
}
 
int main(void)
{
    funcPtr pfunc = &add;                       //Указатель на функцию add
    std::cout << operation(4, 6, pfunc) << std::endl;   //передается функции operation
    system("pause");
    exit(EXIT_SUCCESS);
}
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 14:58  [ТС] #13
а можно написать так?
C++
1
2
char a[50];
a[50]="escape";
Добавлено через 3 минуты
и почему если написать так:
C++
1
2
char a[50];
cin >> a[50];
он пишет, что необъявленный идентификатор "a"
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.07.2010, 15:03 #14
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
а можно написать так?
C++
1
2
char a[50];
a[50]="escape";
Это будет неправильно. Сразу несколько ошибок:
  1. Ты выделил место для строки из 50 символов. Первый символ имеет индекс 0, последний - 49 (причем это нуль-терминатор, символ '\0', обозначающий конец строк С).
  2. a[50] - это символ, а ты пытаешься присвоить ему строку
  3. Присваивание строк выполняется функцией strcpy



Добавлено через 1 минуту
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
он пишет, что необъявленный идентификатор "a"
В данном случае для того, чтобы обратиться к строке, тебе нужно использовать идентификатор а, а чтобы к отдельному символу строки - идентификатор а[i]
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
16.07.2010, 15:04  [ТС] #15
а если мне нужно присвоить строку, которую вводит пользователь..какую функцию использовать...на ум приходит getline()
0
16.07.2010, 15:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 15:04
Привет! Вот еще темы с ответами:

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Через указатели на указатели посчитать сумму двух чисел и записать в третье - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной - C++
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; void min_max(int*pa, int*pb,...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов? - C++
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;// выделил для первой строки матрицы два...


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

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

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