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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
#1

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

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

Подскажите пожалуйста как из функции использовать в функции 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 - как и когда его использовать
C++ Получить указатель на объект который вызвал метод или Функцию в теле самой функции
использование массива из функции в другой функции C++
C++ Указатель на функцию в вызове другой функции
Указатель на привязанную функцию можно использовать только для вызова функции C++
Применение переменных одной функции в другой функции C++
Можно ли передать указатель на функцию как параметр другой функции? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
5941 / 3378 / 335
Регистрация: 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
7066 / 5243 / 263
Регистрация: 10.12.2010
Сообщений: 23,072
Записей в блоге: 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
5415 / 4811 / 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
5415 / 4811 / 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
5415 / 4811 / 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++
C++ Получить доступ к локальной переменной другой функции
Передача массива другой функции через указатель C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5415 / 4811 / 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     Получить указатель из функции и использовать его в другой функции
Ответ Создать тему
Опции темы

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