Страница 1 из 1

Учу Си, подскажите, как скопировать array

Добавлено: 04.01.2013 18:45
Гость
В школе дали задание

Код: Выделить всё

       
Условие, скопировать все из arch в указатель iarch, без циклов, только манипулируя указателями и ссылками
        int arch[1];
	int* iarch; 

        arch[10]=110;
	arch[15]=150;
	arch[-120]=1120;

я сделал так, 
	iarch = (int*)&arch;

	printf("\n arch[10]=%d arch[15]=%d arch[-120]=%d",arch[10] ,arch[15], arch[-120]);
   	printf("\n iarch[10]=%d iarch[15]=%d iarch[-120]=%d",iarch[10] ,iarch[15], iarch[-120]);

окно вывода:
-120 не получается скопировать, как сделать правильно? 
_________________________________________
 arch[10]=110 arch[15]=150 arch[-120]=1120
 iarch[10]=110 iarch[15]=150 iarch[-120]=3


Re: Учу Си, подскажите, как скопировать array

Добавлено: 04.01.2013 19:11
dude
int arch[1];
arch[10]=110;

бляяяя
кадат это был говнофорум айтишнегоф

Re: Учу Си, подскажите, как скопировать array

Добавлено: 04.01.2013 19:40
обер лейтенант
dude писал(а):int arch[1];
arch[10]=110;

бляяяя
кадат это был говнофорум айтишнегоф
зато какая экономия памяти!

Re: Учу Си, подскажите, как скопировать array

Добавлено: 04.01.2013 20:14
Гость
dude писал(а):int arch[1];
arch[10]=110;

бляяяя
кадат это был говнофорум айтишнегоф
это на листике в условии было

Код: Выделить всё

   int arch[1];
   int* iarch;

   arch[10]=110;
   arch[15]=150;
   arch[-120]=1120;

надо скопировать все так чтобы получилось 
так
  iarch[10]=110;
  iarch[15]=150;
  iarch[-120]=1120;
 пользуясь только  указателями и ссылками!


Re: Учу Си, подскажите, как скопировать array

Добавлено: 04.01.2013 20:46
Гость
Написано, конечно безграмотно, но вполне возможно что будет работать. Непонятно только, как можно брать адрес от константы (arch) и почему меняется значение в неиспользованном стеке (-120). И стек ты испортил, кстати.

Re: Учу Си, подскажите, как скопировать array

Добавлено: 04.01.2013 20:50
Гость
Мы учим адресацию и поведение указателей, в моем примере получается

arch[10]=110 arch[15]=150 arch[-120]=1120
iarch[10]=110 iarch[15]=150 iarch[-120]=3

, т.е iarch[-120],копирует 3, вместо 1120, почему ?

Re: Учу Си, подскажите, как скопировать array

Добавлено: 05.01.2013 09:34
Гость
Гость писал(а):Написано, конечно безграмотно, но вполне возможно что будет работать. Непонятно только, как можно брать адрес от константы (arch) и почему меняется значение в неиспользованном стеке (-120). И стек ты испортил, кстати.
Наверное, наш лерер, специально подвох сделал, а как стек исправить, не меняя условия?

Re: Учу Си, подскажите, как скопировать array

Добавлено: 06.01.2013 19:52
Гость
Гость писал(а):Мы учим адресацию и поведение указателей, в моем примере получается

arch[10]=110 arch[15]=150 arch[-120]=1120
iarch[10]=110 iarch[15]=150 iarch[-120]=3

, т.е iarch[-120],копирует 3, вместо 1120, почему ?

я конечно не особо аитишнег но как ты умудрился отрицательный адрес в С/С++ забабахать для меня загадка. В принципе если сделать перегрузку [] (в С++) и использовать хеш вместо адреса то можно но тогда забудь про указатели и быстрое копирование массивов. Зато в качетве адреса можешь использовать что угодно, хоть буквы, хоть слова или даже целые фразы, иногда бывает очень удобно типа реляционных таблиц, вся программа умещается в несколько строк.