Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224

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

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

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как из функции использовать в функции main указатель?
пример
C++
1
2
3
4
5
6
7
8
void foo1()
{u=sizeof(str1);
    int *l=&u;
}
int main(){
// тут я хочу вывести значение l;
cout<<????
               }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2012, 22:31
Ответы с готовыми решениями:

Получить массив char и его размер из функции - Указатель не меняется вне функции
Помогите пожалуйста разобраться в чём проблема. Добавлено через 34 минуты Помогите пожалуйста разобраться в чём проблема. Нужно...

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

(SQL 2008) Как использовать результат функции в другой функции (в контексте сравнения)?
Есть функция от 2-х параметров (id измерения и месяц числом), которая считает среднее значение в зависимости от параметров: create...

11
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
05.07.2012, 22:33
C++
1
2
3
4
5
int* foo1()
{
    u = sizeof(str1);
    return &u;
}
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.07.2012, 22:35
Никак, так как l не существует вне ф-ции foo1()
0
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
05.07.2012, 22:51  [ТС]
посмотрите есть функция:
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
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
05.07.2012, 23:29  [ТС]
сделать её глобальной?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 07:30
Если вам нужна для работы в 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
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 09:19  [ТС]
да.мне она нужна для динамического выделения памяти под массив 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
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 09:29
Цитата Сообщение от RASHFor Посмотреть сообщение
Я сделал её глобальной u
Если можно обойтись без глобальной, то всегда рекомендуют не делать.
1
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 09:38  [ТС]
аааа.спасибо.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 09:53
Дело в том, что глобальная переменная будет видна не только во всех функциях файла, в котором она объявленна, но и в других файлах проекта. Конфликт имён и пр.
1
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
06.07.2012, 10:03  [ТС]
Спасибо.для развития очень полезен ваш совет.
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
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2012, 11:53
C++
1
char *p = new char [strlen(str1) + strlen(str2) - 1];
Цитата Сообщение от RASHFor Посмотреть сообщение
чтобы размер был равен 7.(abcdefg)?
Под строку нужно 8: 7 + '\0'.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2012, 11:53
Помогаю со студенческими работами здесь

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

Видеоадаптер - как можно получить текущий режим дисплея, чтобы использовать его в функции очистки
Такой вопрос: нам необходимо очистить экран.. ест куча способов - сдвиг строк, заполнение пробелами и т.п. Но суть в том что все коды...

Нестандартный вопрос.Как получить доступ к переменным функции из другой функции?
&lt;?php declare(ticks=1); function tick_handler() { print_r($_GLOBALS);//Печатает все переменные в области видимости кода вне функции...

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru