Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2010, 17:46   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию указатели

в одной программе задаю переменную и отображаю её адрес
Код:
int x=10;
main(void)
{
printf("%p",&x);
}
в другой программе ввожу полученный адреc, думаю увидеть число 10, но вот отображается не то число.

Код:
main(void)
{int *x;
scanf("%p", &x);
printf("%d", *x);
}
и вообще, это обращение к данным по адресу, ведется глобально, на всю память компутера, или только в определенном диапазоне, или в пределах нескольких программ?
Артэс вне форума Ответить с цитированием
Старый 06.02.2010, 18:20   #2
BioS
Пользователь
 
Регистрация: 06.02.2007
Сообщений: 42
По умолчанию

правильно что не 10 там, так как у каждого процесса свое адресное пространство
BioS вне форума Ответить с цитированием
Старый 06.02.2010, 18:23   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Не понимаю, зачем вам это может быть надо! И тем более не советую подобным заниматься!
Каждой программе выделяется некоторое количество памяти, и вот в этой самой памяти она что хочет, то и творит. Вообще, полагаю, вы запускали программы одну за другой, так что память, выделенная вашей первой программе, уже могла быть оприходована каким-то совершенно другим процессом, а уж под что и каким образом он эту память использовал - не берется нострадать ни один предсказамус!
В любом случае, не издевайтесь так над памятью, и используйте указатели привычным и гуманным способом!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 06.02.2010, 18:38   #4
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

В том то и дело, что я и спрашиваю про указатели, т.к не знаю... я думал смогу объединить две программы, путем их общения через память, а не через сокеты и т.п... не говоря уже об указателях на функции... ведь если приложение загружается в память, то и функции тоже... и вызвать эту функцию с другого приложения путем обращения к памяти.
Артэс вне форума Ответить с цитированием
Старый 06.02.2010, 20:34   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Артэс
понос слов. разберись с архитектурой памяти в своей ос, чтобы подобное тестить. одного глупого поста бы не было.

Цитата:
я думал смогу объединить две программы, путем их общения через память, а не через сокеты и т.п... не говоря уже об указателях на функции...
ipc
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 06.02.2010, 20:41   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
я думал смогу объединить две программы, путем их общения через память
Так существуют же специальные для этого технологии. Например DDE.
profi вне форума Ответить с цитированием
Старый 06.02.2010, 21:50   #7
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Артэс
понос слов. разберись с архитектурой памяти в своей ос, чтобы подобное тестить. одного глупого поста бы не было.


ipc
Глупым постом можно назвать твой. Иначе следует предположить, что нужно разбераться во всем, прежде чем писать сообщение. В этом случае можно в своем вопросе разобраться самостоятельно, и помощь не понадобится. Тогда смысл этого форума?

Не зачем так грубить.

Цитата:
Сообщение от profi Посмотреть сообщение
Так существуют же специальные для этого технологии. Например DDE.
Хочется стандартного С.

Тогда другой вопрос. Можно ли как-нибудь получить результат от вызова программы, путем system("programm.exe");

например, поместить в переменную то, что возвращает функция main, или какие данные выходят на устройство вывода (я имею ввиду, отображается на консоли запущенной программы).
Артэс вне форума Ответить с цитированием
Старый 06.02.2010, 21:55   #8
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Хочется стандартного С.
Не получится.

Цитата:
поместить в переменную то, что возвращает функция main
А это зачем? Функция main возвращает значение 0 и передает управление ОС, если программа завершила успешно свою работу. Если честно твой вопрос вообще не понятен. Переформулируй его.
profi вне форума Ответить с цитированием
Старый 06.02.2010, 22:05   #9
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

ну это лишь один из вариантов, а что насчет вывода? Не знаю реально это или нет, но просто такое предположение...

можно же вызвать запуск программы, путем system("name.exe"); а вот возможно ли получить то, что выводит та программа на устройство вывода? (т.е на консоль)

name.exe
...
int main()
{
printf("текст");
}
...
в данном случае, после вызова system("name.exe"); получить именно этот "текст", и поместить его в переменную...

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

Последний раз редактировалось Артэс; 06.02.2010 в 22:16.
Артэс вне форума Ответить с цитированием
Старый 07.02.2010, 06:39   #10
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
В том то и дело, что я и спрашиваю про указатели, т.к не знаю... я думал смогу объединить две программы, путем их общения через память, а не через сокеты и т.п... не говоря уже об указателях на функции... ведь если приложение загружается в память, то и функции тоже... и вызвать эту функцию с другого приложения путем обращения к памяти.
Общение между процессами либо через сокеты, либо через пайпы, либо через файлы. Либо пиши длл и загружай на здоровье всё, что хочешь.

Цитата:
Сообщение от Артэс Посмотреть сообщение
ну это лишь один из вариантов, а что насчет вывода? Не знаю реально это или нет, но просто такое предположение...

можно же вызвать запуск программы, путем system("name.exe"); а вот возможно ли получить то, что выводит та программа на устройство вывода? (т.е на консоль)

name.exe
...
int main()
{
printf("текст");
}
...
в данном случае, после вызова system("name.exe"); получить именно этот "текст", и поместить его в переменную...

если до сих пор не понятно, речь идет о том, что бы запустить из основной программы, дополнительную программу, и получить данные от той дополнительной (что она выводит на консоли), в основную.
Копай в сторону функций popen, pipe.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели IceBreaker Общие вопросы C/C++ 9 05.02.2010 09:11
Указатели papochka Общие вопросы C/C++ 2 14.11.2009 22:06
Указатели Mighty Помощь студентам 1 24.10.2009 18:01
Указатели olli Общие вопросы C/C++ 3 20.05.2009 19:40
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39