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

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

Войти
Регистрация
Восстановить пароль
 
Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
#1

Что передано в функцию определить - C++

17.03.2012, 22:07. Просмотров 324. Ответов 3
Метки нет (Все метки)

Имеется код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
void f(char* pch)
{
    // Что передано в функцию ???
    std::cout << pch << std::endl;
}
int main()
{
    char* p1 = "Aaa";
    char* p2 = new char[4]; 
    strcpy(p2,"Bbb");
    char p3[] = "Ccc";
    
    f(p1);
    f(p2);
    f(p3);
}
Как внутри функции определить что именно ей передали ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 22:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что передано в функцию определить (C++):

Чтение из файла, название передано как параметры функции main argc & argv - C++
Вообще дано задание - считать из файла чётные строки, название файла должно быть передано как параметр при запуске из командной строки.. ...

Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз - C++
Задание: Реализуйте пару функций Max, принимающих два целочисленнных параметра и два числа с плавающей точкой соответственно и...

Что значит Handle hf? Что в эту функцию нужно передавать - C++
мне нужно создать функцию Node * ReadNode(HANDLE hf); (Node это структура) Так вот вопрос в том что значит Handle hf? Что в эту функцию...

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

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) - C++
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс вещественных чисел (double).. Определить оператор +, как...

на что можно заменить функцию? - C++
#include &lt;vcl.h&gt; #include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; float yearzp(float z); //описание функции годовая 3/п const int m=20;...

3
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.03.2012, 22:12 #2
Цитата Сообщение от Konstantin_D Посмотреть сообщение
Как внутри функции определить что именно ей передали ?
Вас интересует тип? Тогда шаблоны Вам в помощь. Правда тип у p1 и p2 будет одинаковый.
1
Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
17.03.2012, 22:29  [ТС] #3
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Правда тип у p1 и p2 будет одинаковый.
И никак их не различить?
А если попробовать записать что-то в p1[0] и ловить исключение чтобы константа себя выдала?

А typeid не поможет?
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.03.2012, 23:01 #4
Цитата Сообщение от Konstantin_D Посмотреть сообщение
И никак их не различить?
Никак.
Цитата Сообщение от Konstantin_D Посмотреть сообщение
А если попробовать записать что-то в p1[0] и ловить исключение чтобы константа себя выдала?
Никакого плюсатого исключения не будет сгенерено, в лучшем случае запись удастся, в худшем программа скрашится при попытке записи в память только для чтения.
Цитата Сообщение от Konstantin_D Посмотреть сообщение
А typeid не поможет?
У обоих переменных тип char*, поэтому и typeid будет говорить одно и тоже.

Кстати, вот это:
C++
1
char* p1 = "Aaa";
большая ошибка (а по-простому undefined behavior), т.к. при записи в такую переменную, как я уже сказал могут произойти Ужастные Вещи, правильно писать:
C++
1
const char* p1 = "Aaa";
Добавлено через 23 минуты
Konstantin_D, вот Вам пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
template < typename T >
struct TypeInfo;
 
template <>
struct TypeInfo < char >
{
   static std::string ToString() { return "char"; }
};
 
template < typename T >
void PrintTypeInfo(const T& t)
{
   std::cout << TypeInfo<T>::ToString() << std::endl;
}
 
int main()
{
   char ch;
   PrintTypeInfo(ch);
}
Можете дописать интересующие Вас специализации TypeInfo.
1
17.03.2012, 23:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2012, 23:01
Привет! Вот еще темы с ответами:

Определить функцию - C++
Определить функцию, которая будет менять все буквы нижнего регистра в строке на буквы верхнего регистра. Данные что вводятся: начальная...

Определить функцию - C++
Здравствуйте. Помогите пожалуйста. Определить две функции: void WriteComplex(char * fname, Complex * buffer, int count); – функция...

Определить функцию по условию - C++
помогите написать программу никак не выходит элементы матрицы А задано соотношением : a_i _j =...

Определить функцию по условию - C++
помогите написать программу никак не выходит элементы матрицы А задано соотношением : a_i _j =...


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

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

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