Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
05.07.2012, 22:31     Получить указатель из функции и использовать его в другой функции #1
Подскажите пожалуйста как из функции использовать в функции main указатель?
пример
C++
1
2
3
4
5
6
7
8
void foo1()
{u=sizeof(str1);
    int *l=&u;
}
int main(){
// тут я хочу вывести значение l;
cout<<????
               }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 22:31     Получить указатель из функции и использовать его в другой функции
Посмотрите здесь:

C++ Указатель this - как и когда его использовать
Dызовом родовой функции! Нужно передать массив в качестве аргумента функции через указатель." C++
C++ Получить указатель на объект который вызвал метод или Функцию в теле самой функции
C++ Указатель на функцию в вызове другой функции
Указатель на привязанную функцию можно использовать только для вызова функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
05.07.2012, 22:33     Получить указатель из функции и использовать его в другой функции #2
C++
1
2
3
4
5
int* foo1()
{
    u = sizeof(str1);
    return &u;
}
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,603
Записей в блоге: 17
05.07.2012, 22:35     Получить указатель из функции и использовать его в другой функции #3
Никак, так как l не существует вне ф-ции foo1()
RASHFor
6 / 6 / 0
Регистрация: 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...
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
05.07.2012, 23:29  [ТС]     Получить указатель из функции и использовать его в другой функции #5
сделать её глобальной?
alsav22
5282 / 4801 / 442
Регистрация: 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);
.........
    
}
RASHFor
6 / 6 / 0
Регистрация: 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
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 09:29     Получить указатель из функции и использовать его в другой функции #8
Цитата Сообщение от RASHFor Посмотреть сообщение
Я сделал её глобальной u
Если можно обойтись без глобальной, то всегда рекомендуют не делать.
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 09:38  [ТС]     Получить указатель из функции и использовать его в другой функции #9
аааа.спасибо.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 09:53     Получить указатель из функции и использовать его в другой функции #10
Дело в том, что глобальная переменная будет видна не только во всех функциях файла, в котором она объявленна, но и в других файлах проекта. Конфликт имён и пр.
RASHFor
6 / 6 / 0
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 11:53     Получить указатель из функции и использовать его в другой функции
Еще ссылки по теме:

Можно ли передать указатель на функцию как параметр другой функции? C++
Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель C++
Как использовать указатель на переменную во входящем параметре функции? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 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'.
Yandex
Объявления
06.07.2012, 11:53     Получить указатель из функции и использовать его в другой функции
Ответ Создать тему
Опции темы

Текущее время: 23:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru