Форум программистов, компьютерный форум CyberForum.ru

Указатели :) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверьте правильность кода. Почему выдаёт ошибку? http://www.cyberforum.ru/cpp-beginners/thread250810.html
Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте. Текст программы #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <windows.h>
C++ закрытие программы Здравствуйте господа програмисты!у меня такой вопрос-допустим известно что открыта какая то программа,могу ли я её програмно закрыть если да,то как? Всем заранее огромное спасибо!!! Добавлено через 1 минуту на языке с++ http://www.cyberforum.ru/cpp-beginners/thread250794.html
C++ Определить, пересекаются ли прямая и окружность
Задана окружность с центром в точке О(x0,y0) и радиусом R и прямая у=ах+b. Определить, пересекаются ли прямая и окружность. При положительном ответе найти точки пересечения
Задание на C C++
Ребята помогите решить задание.
C++ Сформировать одномерный массив целых чисел, используя датчик случайных чисел http://www.cyberforum.ru/cpp-beginners/thread250778.html
Условие такое 1.Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Распечатать полученный массив. 2.Удалить 5 последних элементов массива. 3.Добавить в начало массива 3 элемента с значением M+2. Распечатать полученный массив. Делаю. #include <iostream.h>
C++ Матрицы и строки Прошу помочь с решением задач: С клавиатуры вводится матрица размером n x m: 1)Вычислить сумму всех чисел кратных трем в этой матрице и заменить максимальный элемент на эту сумму. 2)Заменить все четные элементы в заданном столбце на минимальный элемент. Строки: 1)С клавиатуры вводится строка символов состоящая из слов. Удалить из строки все слова длиной четыре символа. 2)С клавиатуры... подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.03.2011, 13:25     Указатели :)
Цитата Сообщение от kazak Посмотреть сообщение
а этот пример с указателем на массив из шести элементов вообще работает?
А вы как думаете?

Цитата Сообщение от dimon1984 Посмотреть сообщение
*(*(ptr+x)+y)
Здесь конструкция такая:
Когда мы прибавляем к указателю целое число, на самом деле происходит смещение указателя на это самое число ячеек заданного типа (именно поэтому надо указывать тип указателя - чтобы при индексации происходило смещение на правильное число байтов). Таким образом, ptr + x - смещение от начала массива ptr на x ячеек памяти. Теперь нам надо получить значение этой ячейки, поэтому мы к этому выражению применяем операцию разыменования - *(ptr + x). Поскольку значением ячейки является указатель (массив двумерный), то к полученному значению снова можно применить ту же операцию. Т.е. на самом деле теперь *(ptr + x) - тоже адрес. Тогда *(ptr + x) + y - уже смещение относительно строки ptr + x на y ячеек по столбцам. Но нас интересует конкретное значение в заданной ячейке, поэтому мы снова применяем операцию разыменования - *(*(ptr + x) + y) - и получаем элемент заданного типа (например int).

Цитата Сообщение от dimon1984 Посмотреть сообщение
почему нельзя звёздочку ставить за скобкой *(ptr)[6] = m;
Потому что когда компилятор разбирает такое выражение, он сначала смотрит направо, потом налево. Таким образом при разборе выражения char *(ptr)[6] он будет строить такую картину. ptr - это (смотрит направо - скобка, смотрит налево - скобка, смотрит направо - видит [6]) массив из шести (смотрит налево - видит char *) указателей на char. А мы добивались другого. При разборе конструкции char (*ptr)[6] получаем ptr - это (смотрим направо - скобка, смотрим налево - *) указатель на (смотрим направо - видим [6]) массив из шести (смотрим налево - видим char) элементов типа char, чего мы и хотели добиться.
 
Текущее время: 11:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru