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

Синтаксис - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не компилируется из-за неверных конструкторов. В чём дело? http://www.cyberforum.ru/cpp-beginners/thread173714.html
#include "stdafx.h" #include <conio.h> #include <string.h> class Person { private: char Firstname ; char Surname ; char Patrname ;
C++ Что такое assoc и с чем его едят? Объясните, пожаалуйста) http://www.cyberforum.ru/cpp-beginners/thread173703.html
Поиск максимального и минимального элементов массива C++
Народ спасайте! Как сделать так чтобы человек вводит сколько элементов массива, вводит их, а ему пишут максимальное и минимальное! И плизз вторая задача! Человек вводит сколько элементов массива, вводит их, а программа сортирует их от меньшего к большему!
В числе поменять местами цифры C++
Дано число ABCDEF.GHIKLM(в котором буквы – это любые цифры (0..9)) в этом числе поменять местами E – H и C – L
C++ Построить результат сглаживания заданной вещественной матрицы размером 10 на 10. http://www.cyberforum.ru/cpp-beginners/thread173645.html
Соседями элемента Аij в матрице назовем элементы Аk! С i-1≤k≤i+1,j-1≤1≤j+1, (k, 1) ≠ (I, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент который получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10. В сглаженной матрице найти сумму...
C++ Получить новую матрицу путем замены элементов Добрый вечер. Ув. форумчане пожалуйста помогите решить задачу по программированию, на тему: матрицы. Условие: Дано действительную квадратную матрицу порядка n. Получить новую матрицу путем замены элементов, сумма индексов которых четная на среднее геометрическое модулей элементов, находящихся на главной диагонали. необходимо написать код на С++, пожалуйста подскажите! Добавлено через 1... подробнее

Показать сообщение отдельно
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
07.10.2010, 23:34     Синтаксис
Из справочника по C:

Указатели.
1.2.4. Указатели
Указатель - это адрес памяти, распределяемой для размещения идентификатора (в качестве идентификатора может выступать имя переменной, массива, структуры, строкового литерала). В том случае, если переменная объявлена как указатель, то она содержит адрес памяти, по которому может находится скалярная величина любого типа. При объявлении переменной типа указатель, необходимо определить тип объекта данных, адрес которых будет содержать переменная, и имя указателя с предшествующей звездочкой (или группой звездочек). Формат объявления указателя:

спецификатор-типа [ модификатор ] * описатель .

Спецификатор-типа задает тип объекта и может быть любого основного типа, типа структуры, смеси (об этом будет сказано ниже). Задавая вместо спецификатора-типа ключевое слово void, можно своеобразным образом отсрочить спецификацию типа, на который ссылается указатель. Переменная, объявляемая как указатель на тип void, может быть использована для ссылки на объект любого типа. Однако для того, чтобы можно было выполнить арифметические и логические операции над указателями или над объектами, на которые они указывают, необходимо при выполнении каждой операции явно определить тип объектов. Такие определения типов может быть выполнено с помощью операции приведения типов.

В качестве модификаторов при объявлении указателя могут выступать ключевые слова const, near, far, huge. Ключевое слово const указывает, что указатель не может быть изменен в программе. Размер переменной объявленной как указатель, зависит от архитектуры компьютера и от используемой модели памяти, для которой будет компилироваться программа. Указатели на различные типы данных не обязательно должны иметь одинаковую длину.

Для модификации размера указателя можно использовать ключевые слова near, far, huge.

Примеры:

unsigned int * a; /* переменная а представляет собой указатель
на тип unsigned int (целые числа без знака) */
double * x; /* переменная х указывает на тип данных с
плавающей точкой удвоенной точности */
char * fuffer ; /* объявляется указатель с именем fuffer
который указывает на переменную типа char */
double nomer;
void *addres;
addres = & nomer;
(double *)addres ++;
/* Переменная addres объявлена как указатель на объект любого типа. Поэтому ей можно присвоить адрес любого объекта (& - операция вычисления адреса). Однако, как было отмечено выше, ни одна арифмитическая операция не может быть выполнена над указателем, пока
не будет явно определен тип данных, на которые он указывает. Это
можно сделать, используя операцию приведения типа (double *) для
преобразования addres к указателю на тип double, а затем увеличение адреса. */
const * dr;
/* Переменная dr объявлена как указатель на константное выражение, т.е. значение указателя может изменяться в процессе выполнения программы, а величина, на которую он указывает, нет. */
unsigned char * const w = &obj.
/* Переменная w объявлена как константный указатель на данные типа char unsigned. Это означает, что на протяжение всей программы
w будет указывать на одну и ту же область памяти. Содержание же
этой области может быть изменено. */


Операции разадресации и адреса
Эти операции используются для работы с переменными типа указатель.

Операция разадресации (*) осуществляет косвенный доступ к адресуемой величине через указатель. Операнд должен быть указателем. Результатом операции является величина, на которую указывает операнд. Типом результата является тип величины, адресуемой указателем. Результат не определен, если указатель содержит недопустимый адрес.

Рассмотрим типичные ситуации, когда указатель содержит недопустимый адрес:

- указатель является нулевым;

- указатель определяет адрес такого объекта, который не является активным в момент ссылки;

- указатель определяет адрес, который не выровнен до типа объекта, на который он указывает;

- указатель определяет адрес, не используемый выполняющейся программой.

Операция адрес (&) дает адрес своего операнда. Операндом может быть любое именуемое выражение. Имя функции или массива также может быть операндом операции "адрес", хотя в этом случае знак операции является лишним, так как имена массивов и функций являются адресами. Результатом операции адрес является указатель на операнд. Тип, адресуемый указателем, является типом операнда.

Операция адрес не может применятся к элементам структуры, являющимися полями битов, и к объектам с классом памяти register.

Примеры:

int t, f=0, * adress;
adress = &t /* переменной adress, объявляемой как
указатель, присваивается адрес переменной t */
* adress =f; /* переменной находящейся по адресу, содержащемуся
в переменной adress, присваивается значение
переменной f, т.е. 0 , что эквивалентно
t=f; т.е. t=0; */


В справочнике советую ещё по юзать раздел "1.7. УКАЗАТЕЛИ И АДРЕСНАЯ АРИФМЕТИКА".
Вобщем полезный справочник советую иметь под рукой.
Вложения
Тип файла: zip c.zip (113.2 Кб, 319 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru