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

Ответить
Аватара пользователя
Гость

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

Сообщение Гость »

В школе дали задание

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

       
Условие, скопировать все из 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

Аватара пользователя
dude
Сообщения: 27236
Зарегистрирован: 25.10.2011 20:55

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

Сообщение dude »

int arch[1];
arch[10]=110;

бляяяя
кадат это был говнофорум айтишнегоф
Любая машина прослужит вам до конца жизни, если ездить достаточно быстро.
Аватара пользователя
обер лейтенант

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

Сообщение обер лейтенант »

dude писал(а):int arch[1];
arch[10]=110;

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

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

Сообщение Гость »

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

Сообщение Гость »

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

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

Сообщение Гость »

Мы учим адресацию и поведение указателей, в моем примере получается

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

, т.е iarch[-120],копирует 3, вместо 1120, почему ?
Аватара пользователя
Гость

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

Сообщение Гость »

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

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

Сообщение Гость »

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

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

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

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