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

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

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

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

05.07.2012, 22:31. Просмотров 1292. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получить указатель из функции и использовать его в другой функции (C++):

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

Указатель на функцию в вызове другой функции - C++
Всем доброе утро. У меня есть вот такая функция. double f(double x) { return x*x; } И мне нужно найти медиану в квадрате. Что я...

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

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

Указатель на функцию с аргументами, как аргумент другой функции - C++
У меня есть некая функция, которая принимает как аргумент другую функцию typedef void(*func_type)(); start(func_type...

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

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

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

Получить указатель на объект который вызвал метод или Функцию в теле самой функции - C++
Доброго времени суток! Можно ли не передавая явно указатель на объект(this) получить к нему доступ из функции вызванной одним из...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель) - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Получить доступ к локальной переменной другой функции - C++
Что не так?Можно ли тут обойтись без указателя? #include &lt;iostream&gt; using namespace std; int a = 0; void m(void) { extern int b;...


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

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

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