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

Указатель на массив char и прочее - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны вещественные массивы a[13] и k [13], для каждого массива определить... http://www.cyberforum.ru/cpp-beginners/thread351326.html
Даны вещественные массивы a и k , для каждого массива определить минимальный положительный элемент и средне гармоническое всех отрицательных элементво массива.
C++ вычислить сумму элементов,расположенных между максимальным и минимальным элементом вычислить сумму элементов,расположенных между максимальным и минимальным элементом (первыми по порядку, если их нескглько) Если вычислить сумму не удается, выдать сообщерие с указанием причины. http://www.cyberforum.ru/cpp-beginners/thread351318.html
C++ Русские буквы
Ребят всем привет!!! Подскажите мне пожалуйста такую вещь,хочу в С++ чтобы на русском выводилось,компилирую в Dev C++,у меня каляки маляки выходят,то есть в компиляторе например пишу "Привет" в командной строке вижу "оыаотд"
C++ Реализация класса
Так как только начал изучать с++, возникает вопрос: есть задание : Реализовать класс IntArray. Разработать тестовую программу для проверки работоспособности класса (т.е. необходимо убедиться в работоспособности всех конструкторов и операторов класса, а также всех его методов). Для этого достаточно делать распечатку массива после выполнения каждой операции, которая может изменять его...
C++ Linker error при компиляции http://www.cyberforum.ru/cpp-beginners/thread351257.html
У меня вылезает ошибка при компиляции: undefined reference to `gluPerspective@32' По сути он ругается на то что не может найти функцию gluPerspective, но в include я подключил #include <gl\glu.h>, в папке такой файл есть (даже открывал сам заголовочный файл и в нем все на месте), компилирую в dev c++, код брал отсюда...
C++ Разрушение объектов при наследовании Привожу код, вопрос после описания #include <iostream> using namespace std; class A { public: A() подробнее

Показать сообщение отдельно
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
14.09.2011, 17:17     Указатель на массив char и прочее
Цитата Сообщение от Evg Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
typedef int (*bbb)[6];
 
bbb b;
int *x;
 
void func (void)
{
  x = b[3];
}
Код
        movl    b, %eax
        addl    $72, %eax
        movl    %eax, x
Тут фактически в "x" записывается адрес "b" + 72 байта. 72 = 3 * 24, где 24 = 6 * 4, где 6 - количество элементов массива, а 4 - размер одного элемента массива (размер указателя). Хотя всё равно странная какая-то конструкция, типа выражения b[3] есть указатель. Надо посоображать, что же это означает
я думаю так.
у нас b указатель. По адресу b расположен массив из 6 интов. тоесть он занимает 6*4 байт.
А если массив не один...
b[1] будет указывать на второй массив. Второй массив уже находится дальше, его смещение относительно первого адреса b есть 6*4
b[2] 6*4+6*4
b[3] 6*4+6*4+6*4=72.
b[3] есть указатель на четвёртый массив(который состоит из 6 интов)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
typedef int (*bbb)[6];
 
bbb b;
int* x;
int* y;
int* y2;
int (*x2)[6]; 
void func (void)
{
//в комментариях под [3] я имею в виду индекс. У четвёртого массива индекс 3.
x = b[3];//указатель на [0] элемент [3] массива
 
y=&x[1];//указатель на [1] элемент массива, который находится по адресу x
y2=&(b[3])[1];//указатель на [1] элемент [3] массива
 
x2 = &b[3];//указатель на [3] массив 
}
чтобы было нагляднее надо включить оптимизацию gcc -Wall -O3 -S :
Assembler
1
2
3
4
5
6
7
    movl    b, %edx
    leal    72(%edx), %eax
    movl    %eax, x
    addl    $76, %edx
    movl    %edx, y
    movl    %edx, y2
    movl    %eax, x2
от сюда явно видно что указатели x и y равны между собой. причём y указывает на следующий элемент массива(его адрес на sizeof(int) больше)

Добавлено через 11 минут
о блин, прочёл 9 пост, получается я написал тоже самое, только другими словами
 
Текущее время: 04:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru