LINUX.ORG.RU

с++

 


0

1

не могу понять... нужна помощь. вобщем почему так нельзя?

#

int main(){
int array[2]{1, 3};
int array1[2]{2, 6};
int *p;
p=array; // array-это указатель на область памяти в которой может хранится первый элемент массива.
я его помещаю в указатель "p"

array=array1; 
array1=p; //тут обмениваю значениями два указателя , через третий.
посути теперь должно бы быть так:
for(int i=0; i<2; i++){
std::cout << array[i]// выведет 2 6
std::cout << array1[i]// выведет 1 3 
return 0;
}


#c

почему будет ошибка. почему так нельзя?


Последнее исправление: linuxpc (всего исправлений: 3)

Я понимаю, что вопрос о C++, но, для сравнения, в C99 можно делать так:

#include <stdio.h>

int main()
{
	int *array  = (int[2]){1, 3};
	int *array1 = (int[2]){2, 6};
	int *p;
	p=array; // array-это указатель на область памяти в которой может хранится первый элемент массива.
	// я его помещаю в указатель "p"

	array=array1; 
	array1=p; // тут обмениваю значениями два указателя , через третий.
	// посути теперь должно бы быть так:
	for(int i=0; i<2; i++)
	{
		printf("%d ", array[i]);// выведет 2 6
	}
	putchar('\n');

	for(int i=0; i<2; i++)
	{
		printf("%d ", array1[i]);// выведет 1 3
	}
	putchar('\n');

	return 0;
}
goto-vlad
()
Ответ на: комментарий от linuxpc

а как сделать указатель на функцию?

int (*func)(T*, T*) — такова сигнатура указателя на функцию, а вообще прочитай http://givi.olnd.ru/kr/ и попрактикуйся.

А потом уже приходи.

Twissel ★★★★★
()
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от linuxpc

Пока не разберешься с базовыми вещами, не нужно пытаться понять трюкачества, где легко отстрелить себе ногу ;-)

Twissel ★★★★★
()
Ответ на: комментарий от anonymous

Мне как-то довелось видеть K&R C вживую, да еще и помогать переписывать этот код на стандарт ANSI. Тогда-то и пригодилось.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от Twissel

ребята, еще подзанавес ...

скажите пожалуйста, как объявить указатель на функцию, которая возвращает указатель на массив?

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

https://cdecl.org/

char (*(*x)())[5]

/* declare x as pointer to function returning pointer to array 5 of char */

Только зачем тебе это? Только себе голову забивать непрактичными примерами, а другим — морочить :-)

Twissel ★★★★★
()
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от linuxpc

А ты хорош. При двух страницах замечаний о том, что тебе надо сначала учить азы, усердно продолжаешь искать всё более изощрённые задачи с указателями. :D

Reineke
()
Ответ на: https://cdecl.org/ от Twissel

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

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

Книжка полное дерьмо, пролистал.

У автора талант запутывать простые вещи :-(

Бери книгу Столярова http://stolyarov.info/books/cppintro

Или из старого и проверенного Павловская, Щупак

А книге с оленем найди другое применение.

Удачи!

Twissel ★★★★★
()
Ответ на: комментарий от anonymous

вот прям обидно за ЛОР. это отличный форум.

linuxpc
() автор топика
Ответ на: комментарий от Reineke

Да просто книга откровенный шлак, как бы немного обидно за державу (но напечатана российским издательством). Только и всего.

Twissel ★★★★★
()
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от anonymous

Очень толсто братишка, жир с экрана потёк

Ну хотя бы ознакомится с ассемблерной мнемоникой пролога/эпилога вызова функции ;-)

И такой замечательной инструкцией как lea REG, ADDRESS, на собственном опыте почувствовать, что такое указатели и зачем их используют.

Например я, взглянув на листинг дизассемблера gcc сразу понял, что куда и зачем ( ну и подсветочка участков кода тоже помогла освежить память).

Чего не могу сказать про clang, где он в дампе своеобразно использует регистр rcx.

Так что для азов без оптимизации тоже вполне полезно, чтобы хотя бы примерно представлять, что там уровнем ниже и как это самое соотноситься с синтаксисом Си.

Twissel ★★★★★
()
Ответ на: комментарий от Twissel

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

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

и после выдают под своей фамилией и надписью: ПЕРЕРАБОТАНО .

сколько так выехало только на учебника Киселева. возьмут его какие -то утырки, сменят обложку, свои фамилии напишут и дополнят, что переработан...

так что этот дядька из Киева норм. видно что в теме. вот только примеры длинные.

linuxpc
() автор топика
Ответ на: комментарий от anonymous

Никакой конкретики)) По асму были авторы: Абель, Юров, Зубков. А популярной литературы по возможностям шланга я что-то не припомню ;-)

Twissel ★★★★★
()
Ответ на: комментарий от Twissel

По асму были авторы: Абель, Юров, Зубков.

Там написано, что выделение массива на стеке и его «доступность» до конца функции это не просто случайность, а требование стандарта C к compound literals: «If the compound literal occurs outside the body of a function, the object has static storage duration; otherwise, it has automatic storage duration associated with the enclosing block»?

anonymous
()
Ответ на: комментарий от crutch_master

на экзамене будут спрашивать. хотя уже судя по всему меня даже до него и не допустят.

linuxpc
() автор топика
Ответ на: комментарий от anonymous

Норкоман штоле?

Я спрашивал, где есть популярная литература по возможностям clang, что ты привел выше.

Twissel ★★★★★
()
Ответ на: комментарий от anonymous

ребята, мне загадку загадали: какая операционная система подходит для православных и масульман? ответ C++ только потом разглядел полумесяц и кресты

linuxpc
() автор топика
Ответ на: комментарий от anonymous

Там, где нет шлангующих наркоманов вроде тебя.

Прими уколы от ломки и будь здоров, больше не флуди тут ;-)

Twissel ★★★★★
()
Ответ на: комментарий от linuxpc

Сам с собой переписываешься? ))

ЯВУ уже стал ОС? Очень мило.

Twissel ★★★★★
()
Ответ на: комментарий от linuxpc

Сам с собой переписываешься? ))

ЯВУ уже стал ОС? Очень мило.

Twissel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.