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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2010, 08:43   #1
rommster
Пользователь
 
Регистрация: 05.10.2010
Сообщений: 46
По умолчанию Адрес элемента строки

Столкнулся с такой проблемой: нужно вывести значения элементов массива и их адреса. С массивом int проблем нет, а для char не могу вывести адрес - т.к. выводится строка начиная с указанного адреса. Подскажите, как получить адрес?
Код:
#include <string.h>
#include <iostream.h>

int main()
{
	const int size = 5;
	int array[size] = {2,4,6,8,10};
	char string[size] = "2468";
	int i;
        
        // Массив int
	cout<<"i"<<'\t'<<"Address"<<'\t'<<"Value\n\n";
	for(i=0; i<size; i++)
		cout<<i<<'\t'<<array+i<<'\t'<<*(array+i)<<endl;
	cout<<endl;

	 // Массив char
        cout<<"i"<<'\t'<<"Address"<<'\t'<<"Value\n\n";
	for(i=0; i<size; i++)
		cout<<i<<'\t'<<string+i<<'\t'<<*(string+i)<<endl;
	cout<<endl;


	system("pause");
	return 0;
}
rommster вне форума Ответить с цитированием
Старый 05.10.2010, 10:06   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
(void*)(string+i)
pu4koff вне форума Ответить с цитированием
Старый 05.10.2010, 10:13   #3
rommster
Пользователь
 
Регистрация: 05.10.2010
Сообщений: 46
По умолчанию

Спасибо! То что надо.
rommster вне форума Ответить с цитированием
Старый 05.10.2010, 10:28   #4
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Очевидно (int*) тоже будет работать, но это как кто не кошерно, согласен. А что есть объект типа (void*) просто указетель на область в памяти, но без атирибутов?
coinkrsk вне форума Ответить с цитированием
Старый 05.10.2010, 12:55   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от coinkrsk Посмотреть сообщение
Очевидно (int*) тоже будет работать, но это как кто не кошерно, согласен. А что есть объект типа (void*) просто указетель на область в памяти, но без атирибутов?
void* - это нетипизированный указатель. Является наиболее безопасным при наследовании классов. Просто, в случае сложных иерархий классов, преобразования к указателям на разные классы могут давать разные адреса, т.е. такое не всегда верно:
Код:
(A*) a == (B*) a;
Ну и всегда может быть перегружен какой-то из операторов приведения типов....
pu4koff вне форума Ответить с цитированием
Старый 06.10.2010, 19:27   #6
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Понял, спасибо.
coinkrsk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
3. Вывести номер строки наименьшего элемента в двумерном массиве zebatic Помощь студентам 1 11.06.2010 00:14
Определить номера строки и столбца максимального элемента прямоугольной матрицы. GANGSTER21 Паскаль, Turbo Pascal, PascalABC.NET 12 20.04.2010 21:09
Как передать адрес активной строки в другую таблицу parsn Microsoft Office Excel 2 04.01.2010 23:32
Замена одного элемента строки другим kkkggg PHP 1 18.10.2007 23:09
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39