Запитання з тегом «pointers»

Тип даних, що "вказує" на інше значення, збережене в пам'яті. Змінна вказівника містить адресу пам'яті якоїсь іншої сутності (змінної чи функції чи іншої сутності). Цей тег слід використовувати для запитань щодо використання покажчиків, а не посилань. Найпоширенішими мовами програмування, що використовують покажчики, є мови C, C ++, Go та збірки. Використовуйте певний мовний тег. Інші корисні теги - метод, функція, структура тощо, що описують використання покажчика.

7
Як працює порівняння вказівників у С? Чи нормально порівнювати покажчики, які не вказують на один і той же масив?
У розділі 5 K&R (Мова програмування на C) я прочитав наступне: По-перше, покажчики можуть бути порівняні за певних обставин. Якщо pі qвказують на елементи одного і того ж масиву, то співвідношення подобається ==, !=, <, >=і т.д. працювати належним чином. Що, мабуть, означає, що можна порівняти лише вказівники, що вказують …

4
Чи є void * function () вказівник на функцію або функція, що повертає порожнечу *?
Мене плутає сенс void *function(). Це вказівник на функцію чи функція, що повертається void*? Я завжди використовував це в структурах даних як рекурсивну функцію, що повертає вказівник, але коли я побачив код у багатопотоковому читанні ( pthread), є однакове оголошення функції. Тепер я розгублений, в чому різниця між ними.

3
Чи має еквівалент std :: менше від C ++?
Нещодавно я відповідав на запитання щодо невизначеної поведінки p < qв C pі коли qвказують на різні об'єкти / масиви. Це змусило мене задуматися: C ++ має таку саму (невизначену) поведінку <в цьому випадку, але також пропонує стандартний шаблон бібліотеки, std::lessякий гарантовано повертає те саме, що і <тоді, коли покажчики …

1
Яка семантика об'єктів, що перекриваються в С?
Розглянемо таку структуру: struct s { int a, b; }; Зазвичай 1 , ця структура матиме розмір 8 та вирівнювання 4. Що робити, якщо ми створимо два struct sоб'єкти (точніше, запишемо у виділене сховище два такі об’єкти), причому другий об’єкт перекриє перший? char *storage = malloc(3 * sizeof(struct s)); struct …

1
Чи є різниця двох екземплярів constexpr __func__ покажчиків досі constexpr?
Чи дійсно це C ++? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC та MSVC вважають, що це нормально, Кланг вважає, що це не так: Compiler Explorer . Усі компілятори погоджуються, що це нормально: Провідник компілятора . int main() { constexpr auto p = …

1
Чи може вказівник на неповний тип бути неповним?
Може int (*)[]бути неповним типом? C 2018 6.2.5 1 каже: У різних точках в одиниці перекладу тип об'єкта може бути неповним (бракує достатньої інформації для визначення розміру об'єктів цього типу) або повним (має достатню інформацію). Таким чином, здається, що якщо розмір типу відомий, тип буде повним. 6.2.6.1 28 вказується, що …

4
Як розмірofof працює з цим перенаправленням вказівника на масив?
Тут у мене є вказівник ptrна масив arrіз 4 цілих чисел. ptrвказує на весь масив. ptr[0]або *ptrвказує на перший елемент масиву, тому додаючи 1, ptr[0]надає адресу другого елемента масиву. Я не можу зрозуміти, чому використання sizeof(ptr[0])дає розмір усього масиву, 16 байт, а не розмір лише першого елемента, 4 байти (як …
9 c  arrays  pointers 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.