Вопросы по теме 'pointer-arithmetic'
Разница в указателе/адресе
Почему разница между двумя адресами неверна? http://codepad.org/NGDqFWjJ
#include<stdio.h>
int main()
{
int i = 10, j = 20;
int *p = &i;
int *q = &j;
int c = p - q;
printf("%d\n", p);
printf("%d\n", q);...
18349 просмотров
schedule
07.04.2023
Визуализация OpenCV для понимания арифметики указателей
Я только изучаю OpenCV. В книге, которую я читаю, рекомендуется, чтобы для операций, в которых мне нужно касаться каждого пикселя, я использовал двойной цикл for с арифметикой указателя, stepWidth и т. д., чтобы переходить от одного к другому.
Мне...
133 просмотров
schedule
08.07.2022
Сохранение разницы указателей в целых числах?
Это код:
#include<stdio.h>
#include<conio.h>
int main()
{
int *p1,*p2;
int m=2,n=3;
m=p2-p1;
printf("\np2=%u",p2);
printf("\np1=%u",p1);
printf("\nm=%d",m);
getch();
return 0;
}
Это дает...
96 просмотров
schedule
30.06.2023
В чем разница между указателем на массив и указателем на указатель?
Я новичок в программировании и изучаю указатели в массиве. Я немного смущен прямо сейчас. Взгляните на программу ниже:
#include <stdio.h>
int fun();
int main()
{
int num[3][3]={23,32,478,55,0,56,25,13, 80};...
1325 просмотров
schedule
04.04.2022
Указатель арифметики вокруг приведения
В настоящее время я обучаюсь в классе CS107, который делает следующие предположения:
sizeof(int) == 4
sizeof(short) == 2
sizeof(char) == 1
прямой порядок байтов
Мой профессор показал следующий код:
int arr[5];...
639 просмотров
schedule
16.04.2022
Как компилятор знает, как увеличивать разные указатели?
Я понимаю, что в целом указатели на любой тип данных будут иметь одинаковый размер. В 16-битной системе обычно 2 байта, а в 32-битной системе - 4 байта.
В зависимости от того, на что указывает этот указатель, если он увеличивается, он будет...
582 просмотров
schedule
19.02.2022
Вычитание регистров с помощью инструкции LEA?
Поддерживает ли инструкция LEA отрицательное смещение?
mov rax, 1
lea rsi, [rsp - rax]
Когда я использую приведенный выше код в моем asm-файле, я получаю сообщение об ошибке:
$ nasm -f macho64 test.asm
$ error: invalid effective address...
1334 просмотров
schedule
03.09.2023
Разница указателей между двумя указателями int
int main(void) {
int *a;
int *b = a++;
printf("%d\n",b-a);
return 0;
}
Я ожидал, что на выходе будет 1, почему это -1?
Предположим, что в приведенном выше вопросе вместо a++ у меня есть ++a .
Это все еще неопределенное...
689 просмотров
schedule
15.02.2023
вычитание двух адресов дает неверный результат
int main()
{
int x = 4;
int *p = &x;
int *k = p++;
int r = p - k;
printf("%d %d %d", p,k,p-k);
getch();
}
Выход:
2752116 2752112 1
Почему не 4 ?
А также я не могу использовать p+k или любой другой...
201 просмотров
schedule
05.02.2024
Как правильно разыменовать указатель массива typedef?
Я использую сторонний код, тип которого определен как:
typedef float MarkerData[3];
позже в коде у меня есть массив данных о положении этого маркера, на который ссылаются как:
MarkerData* Markers;
Я использую этот код для...
144 просмотров
schedule
04.06.2022
Указатели: чтение нарушения прав доступа при попытке разыменования указателя путем добавления большого числа
Я пытаюсь больше изучить указатели, ниже приведен пример кода, который я пытаюсь
Это работает:
int *arth, art;
art = 100;
arth = &art;
printf("arth address is %p arth+1 value is %d", arth, *(arth + 1));
теперь, если я попытаюсь...
720 просмотров
schedule
04.05.2023
Есть ли арифметика указателя на неактивном члене объединения UB?
Рассмотрим этот пример кода:
struct sso
{
union {
struct {
char* ptr;
char size_r[8];
} large_str;
char short_str[16];
};
const char* get_tag_ptr() const {
return short_str+15;...
596 просмотров
schedule
19.08.2022
Почему последняя строка печатает 2 вместо 8?
&array[0] и &array[2] по отдельности печатают правильные значения, которые являются адресами массива [0] и массива [2] соответственно. Однако, когда я вычитаю два, печатается 2 вместо 8 , что является разницей двух адресов.
Какие...
56 просмотров
schedule
15.11.2022
Арифметика указателя пошла не так
Я пытаюсь использовать char * для хранения строки, и поскольку указатель указывает на ячейку памяти первого char данной строки, я попытался использовать арифметику указателя ( ptr++ ) для перехода к следующему символу (поскольку они сохраняются...
93 просмотров
schedule
14.05.2022
В чем разница между a+i и &a[i] для арифметики указателей в C++?
Предположим, у нас есть:
char* a;
int i;
Многие вводные сведения о C++ (например, этот ) предполагает, что rvalue a+i и &a[i] взаимозаменяемы. Я наивно верил в это несколько десятилетий, пока недавно не наткнулся на следующий...
597 просмотров
schedule
25.02.2023
доступ к многомерному массиву C через синтаксис массива против арифметики указателя
Я снова погружаюсь в C через несколько лет. Я думал, что следующие два оператора печати будут иметь одинаковый результат на основе другие ответы я нашел; однако, похоже, это не так.
int main()
{
int** arr = malloc(
3 *...
34 просмотров
schedule
27.03.2022