pointers- все статьи тега ➜ страница 2


Есть ли преимущества передачи по указателю над передачей по ссылке в C++?

каковы преимущества передачи по указателю над передачей по ссылке в C++? В последнее время я видел несколько примеров, которые выбрали передачу аргументов функции указателями вместо передачи по ссылке. Есть ли польза от этого? пример: func(SPRITE *x); с вызовом на func(&mySprite); и func(SPRITE &x); с вызовом на func(mySprite); ...

Зачем использовать двойной указатель? или Зачем использовать указатели на указатели?

когда следует использовать двойной указатель в C? Может кто-нибудь объяснить на примере? Я знаю, что двойной указатель-это указатель на указатель. Зачем мне нужен указатель на указатель? ...

C не так уж сложно: void (*(*f[]) ()) ()

Я только что видел фотографию сегодня и думаю, что буду признателен за объяснения. Итак, вот картина: Я нашел это запутанным и задался вопросом, являются ли такие коды когда-либо практичными. Я погуглил картинку и нашел другую картинку в этой reddit запись, и вот что картина: Так это "чтение по спирали" - это что-то действует? Это то, как компиляторы C разбирают? Было бы здорово, если бы были попроще объяснения этого странного кода. Помимо всего прочего, могут ли такие коды быть полезны? Е ...

Является ли имя массива указателем?

является ли имя массива указателем в C? Если нет, то в чем разница между именем массива и переменной указатель? ...

Почему библиотеки и фреймворки C++ никогда не используют интеллектуальные указатели?

Я читал в нескольких статьях, что сырые указатели следует почти никогда не используется. Вместо этого они всегда должны быть завернуты в интеллектуальные указатели, будь то указатели с областью действия или общие указатели. однако я заметил, что такие фреймворки, как Qt, wxWidgets и библиотеки, такие как Boost, никогда не возвращаются и не ожидают интеллектуальных указателей, как будто они их вообще не используют. Вместо этого они возвращают или ожидают необработанные указатели. Есть ли для это ...

Какой смысл в указателях const?

Я не говорю о указателях на значения const,но сами указатели const. Я изучаю C и C++ за пределами самого основного материала, и только до сегодняшнего дня я понял, что указатели передаются по значению в функции, что имеет смысл. Это означает, что внутри функции я могу сделать скопированный указатель на какое-то другое значение, не затрагивая исходный указатель от вызывающего объекта. Итак, какой смысл иметь заголовок функции, который говорит: void foo(int* const ptr); внутри такой функции ...

Как delete [] знает, что это массив?

хорошо, я думаю, мы все согласны, что то, что происходит со следующим кодом, не определено, в зависимости от того, что передается, void deleteForMe(int* pointer) { delete[] pointer; } указатель может быть всякие разные вещи, и поэтому выполнение безусловного delete[] на нем не определено. Однако предположим, что мы действительно передаем указатель массива, int main() { int* arr = new int[5]; deleteForMe(arr); return 0; } мой вопрос, в этом случае, когда указатель и масс ...

Разница между *ptr += 1 и * ptr++ в C

Я только начал изучать C, и когда я делал один пример о передаче указателя на указатель в качестве параметра функции, я нашел проблему. это мой пример кода : #include <stdio.h> #include <string.h> #include <stdlib.h> int* allocateIntArray(int* ptr, int size){ if (ptr != NULL){ for (int i = 0; i < size; i++){ ptr[i] = i; } } return ptr; } void increasePointer(int** ptr){ if (ptr != NULL){ *ptr += 1; /* <------------ ...

Почему нулевой адрес используется для нулевого указателя?

в C (или C++, если на то пошло) указатели являются особыми, если они имеют нулевое значение: мне рекомендуется установить указатели на ноль после освобождения их памяти, потому что это означает, что освобождение указателя снова не опасно; когда я вызываю malloc, он возвращает указатель со значением ноль, если он не может получить мне память; я использую if (p != 0) все время, чтобы убедиться, что переданные указатели действительны и т. д. но поскольку адресация памяти начинается с 0, разве 0 не ...

Возврат массива с помощью C

Я относительно новичок в C и мне нужна помощь с методами работы с массивами. Исходя из программирования Java, я привык к тому, что могу сказать int [] method()для того, чтобы возвратить массив. Однако я обнаружил, что с C вы должны использовать указатели для массивов, когда вы их возвращаете. Будучи новым программистом, я действительно не понимаю этого вообще, даже со многими форумами, которые я просматривал. В принципе, я пытаюсь написать метод, который возвращает массив символов в C. Я буду ...

Указатель выражений: *для PTR++, *++PTR и ++*ПТР

недавно я столкнулся с этой проблемой, которую я не могу понять сам. что означают эти три выражения действительно в смысле? *ptr++ *++ptr ++*ptr Я пробовал Ричи. Но к сожалению не смог уследить за тем, что он рассказал об этих 3-х операциях. Я знаю, что все они выполняются для увеличения указателя/указанного значения. Я также могу предположить, что может быть много вещей о приоритете и порядке оценки. Как один сначала увеличивает указатель, затем извлекает содержимое этого указателя, просто ...

C указатели: указывая на массив фиксированного размера

этот вопрос выходит к гуру C там: В C, можно объявить указатель следующим образом: char (* p)[10]; .. который гласит, что этот указатель указывает на массив из 10 символов. Аккуратная вещь об объявлении такого указателя заключается в том, что вы получите ошибку времени компиляции, если вы попытаетесь назначить указатель массива разного размера p. это также даст вам ошибку времени компиляции, если вы попытаетесь присвоить значение простого указателя char С. Я попытался это с помощью GCC, и эт ...

Что означает 'dword ptr'?

может кто-нибудь объяснит, что это значит? (Синтаксис Intel, x86, Windows) and dword ptr [ebp-4], 0 ...

Можно ли инициализировать указатель C на NULL?

я писал такие вещи, как char *x=NULL; исходя из предположения, что char *x=2; создать char указатель на адрес 2. а, в учебник по программированию GNU C он говорит, что int *my_int_ptr = 2; хранит целочисленное значение 2 на любой случайный адрес в my_int_ptr когда оно выделяется. это, казалось бы, означает, что мой собственный char *x=NULL присваивает любое значение NULL бросил в char это какой-то случайный адрес в памяти. пока #include <stdlib.h> #include <stdio.h> i ...

X не реализует Y (...метод имеет приемник указателя)

уже есть несколько вопросов и ответов на этот "X не реализует Y (... метод имеет приемник указателя) ...

const char* и char const* - это одно и то же?

насколько я понимаю, const модификаторы должны быть прочитаны справа налево. Из этого я получаю следующее: const char* - это указатель, элементы char которого не могут быть изменены, но сам указатель может, и char const* постоянный указатель на mutable chars. но я получаю следующие ошибки в следующем коде: const char* x = new char[20]; x = new char[30]; //this works, as expected x[0] = 'a'; //gives an error as expected char const* y = new char[20]; y = new char[20]; //this ...

Дает ли const-корректность компилятору больше возможностей для оптимизации?

Я знаю, что это улучшает читаемость и делает программу менее подверженным ошибкам, но насколько это улучшит производительность? и на боковой ноте, в чем основное различие между ссылкой и const указатель? Я предполагаю, что они хранятся в памяти по-разному, но как так? ...

C# хранить функции в словаре

Как создать словарь, в котором можно хранить функции? спасибо. У меня есть около 30+ функций, которые могут быть выполнены из пользователей. Я хочу иметь возможность выполнять функцию таким образом: private void functionName(arg1, arg2, arg3) { // code } dictionaryName.add("doSomething", functionName); private void interceptCommand(string command) { foreach ( var cmd in dictionaryName ) { if ( cmd.Key.Equals(command) ) { ...

Копирование объектов в Java

я узнал, что при изменении переменной в Java она не изменяет переменную, на которой она была основана int a = new Integer(5); int b = a; b = b + b; System.out.println(a); // 5 as expected System.out.println(b); // 10 as expected я предположил аналогичную вещь для объектов. Рассмотрим этот класс. public class SomeObject { public String text; public SomeObject(String text) { this.setText(text); } public String getText() { return text; } public void ...

В чем разница между ссылкой на C# и указателем?

Я не совсем понимаю разницу между ссылкой на C# и указателем. Они оба указывают на место в памяти, не так ли? Единственное различие, которое я могу понять, заключается в том, что указатели не так умны, не могут указывать на что-либо в куче, освобождаются от сборки мусора и могут ссылаться только на структуры или базовые типы. одна из причин, по которой я спрашиваю, заключается в том, что существует мнение, что люди должны хорошо понимать указатели (от C, я думаю), чтобы быть хорошим программист ...