powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / указатель на указатель
25 сообщений из 27, страница 1 из 2
указатель на указатель
    #34276601
есть код:
Код: plaintext
long long **fhcb = const_cast <long long **> (pWorkingDevice->frequencyHistoryCycleBuff.get(size1, size2));
почему-то значение fhcb - нормальное, а fhcb[0] - 0x0. Постоянно при любом раскладе. Он ведь должен указывать на одномерный массив вроде...
...
Рейтинг: 0 / 0
указатель на указатель
    #34276870
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если не секрет, что означает long long?
...
Рейтинг: 0 / 0
указатель на указатель
    #34276891
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то не поймуесть код:
Код: plaintext
long long **fhcb = const_cast <long long **> (pWorkingDevice->frequencyHistoryCycleBuff.get(size1, size2));
почему-то значение fhcb - нормальное, а fhcb[0] - 0x0. Постоянно при любом раскладе. Он ведь должен указывать на одномерный массив вроде...
Вообще-то, доступ к нулевому элементу массива через **имя, будет (*fhcb)[0] или *(*fhcb).

И вообще, код очень криво выглядит. Указатель на указатель используется обычно только при работе с возвращаеметром параметром внутри функции. Ты уверен что там **?

man_555если не секрет, что означает long long?
long long - целое вдвое длиннее чем long.
...
Рейтинг: 0 / 0
указатель на указатель
    #34277341
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl че-то не поймуесть код:
Код: plaintext
long long **fhcb = const_cast <long long **> (pWorkingDevice->frequencyHistoryCycleBuff.get(size1, size2));
почему-то значение fhcb - нормальное, а fhcb[0] - 0x0. Постоянно при любом раскладе. Он ведь должен указывать на одномерный массив вроде...
Вообще-то, доступ к нулевому элементу массива через **имя, будет (*fhcb)[0] или *(*fhcb).
White Owl
ага и в этом случае сразу схватишь 11 сигнал и core dump

И вообще, код очень криво выглядит. Указатель на указатель используется обычно только при работе с возвращаеметром параметром внутри функции. Ты уверен что там **?

ну по всей видимости там все-таки ** причем const, а вот зачем const снимать и ковряться в матрице грязными руками - большой вопрос

White Owl
man_555если не секрет, что означает long long?
long long - целое вдвое длиннее чем long.
ну не факт, поскольку стандарт не дает никаких гарантий кроме как sizeof(char) = 1
и sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
...
Рейтинг: 0 / 0
указатель на указатель
    #34277359
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owllong long - целое вдвое длиннее чем long.

Это, наверное, там где инт 2 байта. (long 4, long long 8)

gcc 3 - long - 6, long long - 8.
...
Рейтинг: 0 / 0
указатель на указатель
    #34277379
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh White Owllong long - целое вдвое длиннее чем long.

Это, наверное, там где инт 2 байта. (long 4, long long 8)

gcc 3 - long - 6, long long - 8.

Не всегда.
в некоторых системах long это int32, а long long это int64
...
Рейтинг: 0 / 0
указатель на указатель
    #34277381
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. long там тоже, что просто int
...
Рейтинг: 0 / 0
указатель на указатель
    #34277385
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeishe Akh White Owllong long - целое вдвое длиннее чем long.

Это, наверное, там где инт 2 байта. (long 4, long long 8)

gcc 3 - long - 6, long long - 8.

Не всегда.
в некоторых системах long это int32, а long long это int64

Ну и?
...
Рейтинг: 0 / 0
указатель на указатель
    #34277403
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeisheт.е. long там тоже, что просто int

Вполне возможно.
...
Рейтинг: 0 / 0
указатель на указатель
    #34277436
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MSVC 2005 sizeof(long) == 4, а sizeof(long long) == 8, причём sizeof(long) == sizeof(int)
...
Рейтинг: 0 / 0
указатель на указатель
    #34277475
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В C++Builder на Win32
и в Qt на SuSe 10.1
также.
...
Рейтинг: 0 / 0
указатель на указатель
    #34277506
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeisheи в Qt на SuSe 10.1
также.

Не в qt, а в gcc на сусе. А какая там версия?
...
Рейтинг: 0 / 0
указатель на указатель
    #34277539
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот у больших дядек SUN, AIX, HP int-4, long-8, long long 8
...
Рейтинг: 0 / 0
указатель на указатель
    #34277579
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhНе в qt, а в gcc на сусе. А какая там версия?
linux-15:/ # gcc -v
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.0 --enable-ssp --disable-libssp --enable-java-awt=gtk --enable-gtk-cairo --disable-libjava-multilib --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit --enable-libstdcxx-allocator=new --without-system-libunwind --with-cpu=generic --host=i586-suse-linux
Thread model: posix
gcc version 4.1.0 (SUSE Linux)
...
Рейтинг: 0 / 0
указатель на указатель
    #34277637
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeishegcc version 4.1.0 (SUSE Linux)

Оба на!
...
Рейтинг: 0 / 0
указатель на указатель
    #34277673
White Owl че-то не поймуесть код:
Код: plaintext
long long **fhcb = const_cast <long long **> (pWorkingDevice->frequencyHistoryCycleBuff.get(size1, size2));
почему-то значение fhcb - нормальное, а fhcb[0] - 0x0. Постоянно при любом раскладе. Он ведь должен указывать на одномерный массив вроде...
Вообще-то, доступ к нулевому элементу массива через **имя, будет (*fhcb)[0] или *(*fhcb).

И вообще, код очень криво выглядит. Указатель на указатель используется обычно только при работе с возвращаеметром параметром внутри функции. Ты уверен что там **?

man_555если не секрет, что означает long long?
long long - целое вдвое длиннее чем long.

При (*fhcb)[0] или *(*fhcb) вылетает Segmentation fault (core dumped).
Там действительно ** потому что это функция frequencyHistoryCycleBuff.get() вообще не моя и тут ниче не поделаешь. Так они возвращают матрицу. Константность тут действительно снимать не надо, уберу. Просто так увлекся решением текущей проблемы, что забил временно на константность... Так как все таки обратится к элементу [i,j] имея **fhcb?
...
Рейтинг: 0 / 0
указатель на указатель
    #34277725
че-то не пойму White Owl че-то не поймуесть код:
Код: plaintext
long long **fhcb = const_cast <long long **> (pWorkingDevice->frequencyHistoryCycleBuff.get(size1, size2));
почему-то значение fhcb - нормальное, а fhcb[0] - 0x0. Постоянно при любом раскладе. Он ведь должен указывать на одномерный массив вроде...
Вообще-то, доступ к нулевому элементу массива через **имя, будет (*fhcb)[0] или *(*fhcb).

И вообще, код очень криво выглядит. Указатель на указатель используется обычно только при работе с возвращаеметром параметром внутри функции. Ты уверен что там **?

man_555если не секрет, что означает long long?
long long - целое вдвое длиннее чем long.

При (*fhcb)[0] или *(*fhcb) вылетает Segmentation fault (core dumped).
Там действительно ** потому что это функция frequencyHistoryCycleBuff.get() вообще не моя и тут ниче не поделаешь. Так они возвращают матрицу. Константность тут действительно снимать не надо, уберу. Просто так увлекся решением текущей проблемы, что забил временно на константность... Так как все таки обратится к элементу [i,j] имея **fhcb?

Хотя вроде как сказал White Owl должно работать... (*fhcb+i)[j]...
...
Рейтинг: 0 / 0
указатель на указатель
    #34277800
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
char - 1 -128..+127
unsigned char (где-то обзывется байтом) 1, 0..255
short int - 2, -32___..+32___
unsigned short int он же word 2, 0..65536
word вообще говоря то же, что и unsiged short, но часто используют unsigned int. (см. unsigned int)
int или 2 или 4 байта сооств - то или short int или long int
unsigned int см. int
long int - 4 байта, -2млрд..+2млрд
unsigned long int 4, 0..4млрд (еще называют 4Гб)
dword - то же, что unsigned long правда иногда используют как unsigned long long
long long int - длинный long int, итого 8, от -дох/2 до +дох/2
unsigned long long int - то же, но без знака.
__int64 - то же что и long long

условно:
short int == short
long int == long
int == либо short либо long, чаще всего long

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

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
указатель на указатель
    #34277820
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int **a;

получить досуп можно так: *(*(a + n) + n), либо просто a[n][n] , где n - индекс

вроде, должно работать

сообщите, если неправ
...
Рейтинг: 0 / 0
указатель на указатель
    #34277863
man_555int **a;

получить досуп можно так: *(*(a + n) + n), либо просто a[n][n] , где n - индекс

вроде, должно работать

сообщите, если неправ

не работает. Но тут закрадывается мысль, что под **a в моем случае не просто двумерный массив, а какая-то хитроструктурированная хня... Так функция возвращающая этот самый указатель не моя, то я не могу знать в какой форме она возвращает данные... Ладно, всем спасибо, буду разбираться...
...
Рейтинг: 0 / 0
указатель на указатель
    #34277893
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
man_555int **a;

получить досуп можно так: *(*(a + n) + n), либо просто a[n][n] , где n - индекс

вроде, должно работать

сообщите, если неправ

Я так делаю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int **a, *b, c;
  
 
for(i =  0 , b = *a; i < n; i++, b++)
{
  ...
   c = *b;
  ...
}

Да, и самое главное.
под int **a незабудь выделить память - для начала.
У меня подозрение, что не работает из-за того, что указатель указывает на ХЗ.
ХЗ оно и в африке ХЗ.
...
Рейтинг: 0 / 0
указатель на указатель
    #34278054
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то не пойму man_555int **a;

получить досуп можно так: *(*(a + n) + n), либо просто a[n][n] , где n - индекс

вроде, должно работать

сообщите, если неправ

не работает. Но тут закрадывается мысль, что под **a в моем случае не просто двумерный массив, а какая-то хитроструктурированная хня... Так функция возвращающая этот самый указатель не моя, то я не могу знать в какой форме она возвращает данные... Ладно, всем спасибо, буду разбираться...

У тебя в общем случае, список одномерных массивов. Возврощаемое значение не нуль, значит этот список существует. Ты знаешь количество элементов в этом списке (или количество строк в массиве)?
Если да, то проверь все списки, на какую память они указывают.

Код: plaintext
1.
2.
for (int i= 0  ; i< _известное_количество_списков_ ; ++i)
  printf("%p\n", fhcb[i]);
...
Рейтинг: 0 / 0
указатель на указатель
    #34278088
Akh че-то не пойму man_555int **a;

получить досуп можно так: *(*(a + n) + n), либо просто a[n][n] , где n - индекс

вроде, должно работать

сообщите, если неправ

не работает. Но тут закрадывается мысль, что под **a в моем случае не просто двумерный массив, а какая-то хитроструктурированная хня... Так функция возвращающая этот самый указатель не моя, то я не могу знать в какой форме она возвращает данные... Ладно, всем спасибо, буду разбираться...

У тебя в общем случае, список одномерных массивов. Возврощаемое значение не нуль, значит этот список существует. Ты знаешь количество элементов в этом списке (или количество строк в массиве)?
Если да, то проверь все списки, на какую память они указывают.

Код: plaintext
1.
2.
for (int i= 0  ; i< _известное_количество_списков_ ; ++i)
  printf("%p\n", fhcb[i]);


Так и есть. Написал разработчикам - грят мы храним 2-х мерные массивы как одномерные с хитрой структурой и просто так работать с ними не получиться. Короче надо приводить к определенным типам и тогда все будет... Короче это они через жопу все сделали. Спасибо еще раз...
...
Рейтинг: 0 / 0
указатель на указатель
    #34278160
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чему равен sizeof(fhcb)? Минимальное значение будет равно sizeof(long long), тогда там либо ничего нет, либо вернулся нолик..смотря как трактовать :-)
...
Рейтинг: 0 / 0
указатель на указатель
    #34278168
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то не пойму Akh че-то не пойму man_555int **a;

получить досуп можно так: *(*(a + n) + n), либо просто a[n][n] , где n - индекс

вроде, должно работать

сообщите, если неправ

не работает. Но тут закрадывается мысль, что под **a в моем случае не просто двумерный массив, а какая-то хитроструктурированная хня... Так функция возвращающая этот самый указатель не моя, то я не могу знать в какой форме она возвращает данные... Ладно, всем спасибо, буду разбираться...

У тебя в общем случае, список одномерных массивов. Возврощаемое значение не нуль, значит этот список существует. Ты знаешь количество элементов в этом списке (или количество строк в массиве)?
Если да, то проверь все списки, на какую память они указывают.

Код: plaintext
1.
2.
for (int i= 0  ; i< _известное_количество_списков_ ; ++i)
  printf("%p\n", fhcb[i]);


Так и есть. Написал разработчикам - грят мы храним 2-х мерные массивы как одномерные с хитрой структурой и просто так работать с ними не получиться. Короче надо приводить к определенным типам и тогда все будет... Короче это они через жопу все сделали. Спасибо еще раз...

бывает и такое
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / указатель на указатель
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]