10
ответов

Доступ к массиву оценивает через адресную арифметику с указателями по сравнению с индексированием в C

Я продолжаю читать, что, в C, с помощью адресной арифметики с указателями обычно быстрее, чем индексирование для доступа к массиву. Действительно ли это верно даже с современными (предположительно оптимизирующими), компиляторами? Если так, это все еще...
вопрос задан: 19 March 2012 15:15
8
ответов

Почему последняя строка печатает 2 вместо 8? [Дубликат]

& amp; array [0] и & amp; array [2] индивидуально печатают правильные значения, которые являются адресом массива [0] и массива [2] соответственно. Однако, когда я вычитаю два, вместо 8, которые печатаются ...
вопрос задан: 1 January 2015 17:33
8
ответов

Что убеждает примеры, где адресная арифметика с указателями предпочтительна для выстраивания индексирования?

Я готовлю некоторые слайды к вводному классу C, и я пытаюсь представить хорошие примеры (и мотивация) для использования адресной арифметики с указателями по индексированию массива. Много примеров я вижу в...
вопрос задан: 26 August 2013 17:27
7
ответов

Копирование строки в C

Я смущен этим кодом: (http://www.joelonsoftware.com/articles/CollegeAdvice.html), в то время как (*s ++ = *t ++); Каков порядок выполнения? *s = *t сначала сделан и затем каждый из них...
вопрос задан: 7 March 2010 19:16
6
ответов

Адресная арифметика с указателями [закрывается]

У кого-либо есть какие-либо хорошие статьи или объяснения (блоги, примеры) для адресной арифметики с указателями? Полагайте, что аудитория является набором программистов Java, учащихся C и C++.
вопрос задан: 17 February 2009 20:26
5
ответов

Почему с массивами, почему [5] == 5 [a]?

Как указывает Джоэл в подкасте № 34 «Переполнение стека» на языке программирования C (он же K & amp; R), здесь упоминается это свойство массивов в C: a [5] == 5 [a] Джоэл говорит, что это потому, что указателя ...
вопрос задан: 21 October 2018 07:55
5
ответов

Арифметика указателя для пустого указателя в C

Когда указатель на определенный тип (скажем, int, char, float, ..) увеличивается, его значение увеличивается на размер этого типа данных. Если указатель void, указывающий на данные размера x, увеличивается, ...
вопрос задан: 5 May 2015 22:08
5
ответов

Арифметика указателя C

Учитывая этот код: int * p, * q; p = (int *) 1000; q = (int *) 2000; Что такое q - p и как?
вопрос задан: 29 January 2010 11:06
3
ответа

Всегда ли (p + x) -x приводит к p для указателя p и целому числу x в gcc linux x86-64 C ++

Предположим, у нас есть: char * p; int x; Как недавно обсуждалось в другом вопросе, арифметика, включая операции сравнения недопустимых указателей, может привести к неожиданному поведению в gcc linux x86-64 C ++. ...
вопрос задан: 4 March 2019 06:25
3
ответа

Доступ к элементу за концом массива в C

Я читал книгу K & R по C и обнаружил, что арифметика указателей в C позволяет получить доступ к одному элементу за концом массива. Я знаю, что C позволяет делать почти все с памятью, но я просто ...
вопрос задан: 8 June 2018 08:15
3
ответа

Порядок операций для разыменования и скобочного ref в C

Если я делаю * ptr [x], это что эквивалентно * (ptr [x]) или (* ptr) [x]?
вопрос задан: 24 August 2010 01:00
2
ответа

Арифметика нулевого указателя

Я заметил это предупреждение от Clang: предупреждение: выполнение арифметики с указателем на нулевом указателе имеет неопределенное поведение [-Wnull-pointer-arithmetic] В деталях, именно этот код вызывает это предупреждение: ...
вопрос задан: 17 January 2019 10:02
2
ответа

Почему вычитают нулевого указателя в offsetof ()?

stddef.h Linux определяет offsetof () как: #define offsetof (ТИП, УЧАСТНИК) ((size_t) и ((ВВОДЯТ *) 0)-> УЧАСТНИК), тогда как статья Wikipedia о offsetof () (http://en.wikipedia.org/wiki/Offsetof)...
вопрос задан: 2 April 2010 19:39
2
ответа

Как делает аппаратное сообщение в three-past-the-end указателе, происходят, даже если указатель никогда не разыменовывается?

В его 1 ноября 2005 столбец C++, Herb Sutter пишет... интервал [17]; интервал* endA = + 17; для (интервал* ptr = A; ptr <endA; ptr + = 5) {//...} [O] n некоторые архитектуры ЦП, включая текущий...
вопрос задан: 29 June 2009 12:19
2
ответа

Адресная арифметика с указателями в C

Рассмотрите следующий фрагмент кода: интервал (*p) [3]; интервал (*q) [3]; q = p; q ++; printf (" %d, %d\n", q, p); printf (" %d\n", q-p); я знаю, что адресная арифметика с указателями интеллектуальна, означая что операция...
вопрос задан: 17 April 2009 09:05
1
ответ

Арифметика адреса с массивом указателя на строку [duplicate]

Я могу создать массив строк в C с помощью указателей char * array [] = {"string1", "string2", "string3"}; Когда я хочу напечатать любую строку, я должен указать индекс элемента. char * array [] = {"string1", ...
вопрос задан: 9 June 2013 14:56
1
ответ

C - как преобразовать указатель в массиве к индексу?

Во многих поисковых функциях C (bsearch приходит на ум), если результат найден, возвращается указатель на пятно в массиве. Как я могу преобразовать этот указатель на индекс в массиве, который был...
вопрос задан: 26 April 2010 07:13
0
ответов

В чем смысл делать вычитание двух указателей, не связанных с одним и тем же массивом, неопределенным поведением? [Дубликат]

Согласно проекту C ++ expr.add, когда вы вычитаете указатели одинаковых типов, но не принадлежите одному и тому же массиву, поведение не определено (выделение мое): когда два выражения указателя P ...
вопрос задан: 8 May 2019 14:02
0
ответов

C/C++ :Арифметика указателей

Я немного читал в Pointer Arithmetic и наткнулся на 2 вещи, которые я не мог понять и не знал: использовать адрес _выражение -адрес _выражение, а также адрес _выражение >...
вопрос задан: 27 September 2018 10:58
0
ответов

Разница между указателем и адресом [дублировать]

Почему разница между двумя адресами неверна? http://codepad.org/NGDqFWjJ #include основной () {инт i = 10, j = 20; интервал *p = &i; интервал *q = &j; int c = p - q;...
вопрос задан: 29 June 2017 16:40
0
ответов

Получение смещения и обратно с выровненным указателем в Visual Studio

Я портирую приложение на Visual Studio 2012 (на C ++ 11), которая в настоящее время компилируется и корректно работает на gcc на нескольких платформах. Когда я попытался запустить его, случилось что-то странное (по крайней мере для меня). ...
вопрос задан: 25 February 2015 02:01
0
ответов

Арифметика указателя на указатель

Может кто-нибудь объяснить вывод следующего кода char * a [] = {"ABC123", "DEF456", "GHI789"}; char ** p = a; cout << ++ * p << std :: endl; cout << * p ++ << std :: endl; cout << ++ * p & ...
вопрос задан: 20 February 2012 10:18
0
ответов

چرا من [arr] و همچنین arr [i] در C با انواع داده های بزرگتر کار می کنم؟

کاملاً رایج است که اگر به عنصری از یک آرایه به عنوان arr دسترسی پیدا کنید [ من] در C است که شما همچنین می توانید به عنصر به عنوان i [arr] دسترسی پیدا کنید ، زیرا اینها فقط در * (arr + i) خلاصه می شوند و جمع ...
вопрос задан: 16 February 2012 20:18
0
ответов

Используя указатель void на массив

Я просто пытался используйте указатель void на целочисленный массив, я попытался проверить, могу ли я распечатать массив обратно, вернув его обратно в int. Но это дает мне некоторую случайную ценность. Можете ли вы сказать мне, где я ...
вопрос задан: 11 January 2012 03:38
0
ответов

Является ли арифметика указателей ассоциативной?

Если я скажу, int a [] = {1, 2, 3, 4, 5}; int * p = a; Теперь, если я напишу p + 1 + 2, он будет таким же, как ((p + 1) + 2)? Любая стандартная ссылка, которая доказывает, что это неверно?
вопрос задан: 6 December 2011 18:08
0
ответов

Каков результат NULL + int?

Я видел, что в реализации OpenGL VBO используется следующий макрос: #define BUFFER_OFFSET(i) ((char *)NULL + (i)) //... glNormalPointer(GL_FLOAT, 32, BUFFER_OFFSET(x)); Не могли бы вы предоставить ...
вопрос задан: 27 November 2011 05:16
0
ответов

C странный синтаксис массива в многомерных массивах

Я знал, что это правда: x [4] == 4 [x] Что эквивалентно для multi -мерные массивы? Верно ли следующее? x [4] [3] == 3 [x [4]] == 3 [4 [x]]
вопрос задан: 13 November 2011 02:57
0
ответов

Арифметика указателя для структур

Дано определение структуры, которое содержит одну переменную типа double и три переменные типа int (всего 4 переменные), если p является указателем на это struct со значением 0x1000, какое значение имеет p ++? Это не домашнее задание ...
вопрос задан: 2 October 2011 00:36
0
ответов

Освобождение указателя после арифметики указателя

Мой вопрос очень простой. Допустим, у нас есть: char * ptr = (char *) malloc (sizeof (char) * SIZE); ptr + = РАЗМЕР / 2; бесплатно (птр); Что происходит, когда мы освобождаем указатель? Это неопределенная операция? Это бесплатно ...
вопрос задан: 16 May 2011 06:05
0
ответов

backbone.js и обработка сообщений об ошибках от rails?

Интересно, могут ли пользователи backbone.js мне помочь? Как лучше всего кодировать сообщения об ошибках из приложения rails при использовании с backbone.js, например, тех сообщений об ошибках, которые когда-то были определены ...
вопрос задан: 11 May 2011 14:07