Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
1

Получить указатель из функции и использовать его в другой функции

05.07.2012, 22:31. Просмотров 1319. Ответов 11
Метки нет (Все метки)

Подскажите пожалуйста как из функции использовать в функции main указатель?
пример
C++
1
2
3
4
5
6
7
8
void foo1()
{u=sizeof(str1);
    int *l=&u;
}
int main(){
// тут я хочу вывести значение l;
cout<<????
               }

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 22:31
Ответы с готовыми решениями:

Функция ввода: как мне получить in, чтобы затем использовать его вне функции?
Здравствуйте, форумчане. У меня появилась проблема. Я создаю подобие движка для...

Как использовать указатель на переменную во входящем параметре функции?
Нашел код для решение гиперболического уравнение с помощью разностных схем....

Указатель на функцию в вызове другой функции
Всем доброе утро. У меня есть вот такая функция. double f(double x) { return...

Передача массива другой функции через указатель
Сейчас я изучаю функции и выполняю упражнение по работе с массивом. Задача...

Указатель на привязанную функцию можно использовать только для вызова функции
int ident=mflats.at(1).GetIdent; Объясните пожалуйста, почему нельзя...

11
Петррр
6163 / 3464 / 897
Регистрация: 28.10.2010
Сообщений: 5,928
05.07.2012, 22:33 2
C++
1
2
3
4
5
int* foo1()
{
    u = sizeof(str1);
    return &u;
}
1
Avazart
Эксперт С++
7756 / 5662 / 554
Регистрация: 10.12.2010
Сообщений: 25,663
Записей в блоге: 17
05.07.2012, 22:35 3
Никак, так как l не существует вне ф-ции foo1()
0
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
05.07.2012, 22:51  [ТС] 4
посмотрите есть функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char* mstrcat(char *str1, char *str2)
{   int u=0;
    //int *l=&u;
    char *res = str1;
    while(*str1) 
        ++str1;
    while(*str1++ = *str2++);
    u=sizeof(str1);
    int *l=&u;
 
    return res;
    
}
мне надо переменную l использовать в main.как это сделать?

Добавлено через 2 минуты
т.е переменную u...
0
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
05.07.2012, 23:29  [ТС] 5
сделать её глобальной?
0
alsav22
5444 / 4839 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 07:30 6
Если вам нужна для работы в main() переменная, изменяемая в mstrcat(), то объявите её в main(), а в mstrcat() передайте её по ссылке:
C++
1
char* mstrcat(char *str1, char *str2, int &u)
Вам же u нужна в main()?

Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char* mstrcat(char *str1, char *str2, int &u)
{   
    char *res = str1;
    while(*str1) 
        ++str1;
    while(*str1++ = *str2++);
    u=sizeof(str1);
    return res;
}
int main()
{
.........
 int u = 0;
 mstrcat(..., ..., u);
.........
    
}
0
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 09:19  [ТС] 7
да.мне она нужна для динамического выделения памяти под массив char.
я ж в функцию
C++
1
char* mstrcat(char *str1, char *str2)
передаю из main:

C++
1
2
3
char str1[]={"abc"};
char srt2[]={"defgh"};
mstrcat(char str1, char str2);
Вот чтобы для
C++
1
2
char str1[]={"abc"};
char srt2[]={"defgh"};
sizeof cчитал количество байт?символов? для того ,чтобы когда происходит конкатенация не было выброса исключения.
В ручную поставить char str1[155]={"abc"}; не хочу ,не интересно.Хочу разобраться.
Я сделал её глобальной u
0
alsav22
5444 / 4839 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 09:29 8
Цитата Сообщение от RASHFor Посмотреть сообщение
Я сделал её глобальной u
Если можно обойтись без глобальной, то всегда рекомендуют не делать.
1
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 09:38  [ТС] 9
аааа.спасибо.
0
alsav22
5444 / 4839 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 09:53 10
Дело в том, что глобальная переменная будет видна не только во всех функциях файла, в котором она объявленна, но и в других файлах проекта. Конфликт имён и пр.
1
RASHFor
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 10:03  [ТС] 11
Спасибо.для развития очень полезен ваш совет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 int u = 0;
char* mstrcat(char *str1, char *str2)
{
    char *res = str1;
    while(*str1) 
        ++str1;
    while(*str1++ = *str2++);
    u = sizeof(str1);
    return res;
}
int main(){
    
    int *siz =new int[u];
    char str1[siz]={"abc"};
    char str2[]={"defg"};
    
mstrcat( str1,str2);
cout<<"Str="<<str1<<endl;
cout<<"size="<<u<<endl;
 
system("PAUSE");
return 0;
           }
Подскажите как выделить память под str1, чтобы размер был равен 7.(abcdefg)?
строка 8,13,14
0
alsav22
5444 / 4839 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 11:53 12
C++
1
char *p = new char [strlen(str1) + strlen(str2) - 1];
Цитата Сообщение от RASHFor Посмотреть сообщение
чтобы размер был равен 7.(abcdefg)?
Под строку нужно 8: 7 + '\0'.
1
06.07.2012, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 11:53

Указатель на функцию с аргументами, как аргумент другой функции
У меня есть некая функция, которая принимает как аргумент другую функцию ...

Передать значение переменной в параметры другой функции через указатель
Доброго времени суток. Уже учу ООП и каждый раз возвращаюсь к одной и той же...

Можно ли передать указатель на функцию как параметр другой функции?
В общем, вопрос. Можно ли, допустим ... int fun1(int x) { ... ... ......


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

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

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