Вопросы с тегом «pointers»

330
Указатели против значений в параметрах и возвращаемых значениях

В Go есть различные способы вернуть structзначение или его часть. Для отдельных я видел: type MyStruct struct { Val int } func myfunc() MyStruct { return MyStruct{Val: 1} } func myfunc() *MyStruct { return &MyStruct{} } func myfunc(s *MyStruct) { s.Val = 1 } Я понимаю разницу между ними. Первый...

324
Передача 2D-массива в функцию C ++

У меня есть функция, которую я хочу взять в качестве параметра двумерный массив переменного размера. Пока у меня есть это: void myFunction(double** myArray){ myArray[x][y] = 5; etc... } И я объявил массив в другом месте в моем коде: double anArray[10][10]; Тем не менее, вызов...

309
Как найти «sizeof» (указатель на массив)?

Во-первых, вот код: int main() { int days[] = {1,2,3,4,5}; int *ptr = days; printf("%u\n", sizeof(days)); printf("%u\n", sizeof(ptr)); return 0; } Есть ли способ узнать размер массива, на который ptrуказывает (вместо того, чтобы просто указать его размер, который составляет четыре байта в 32-битной...

309
В чем разница между NULL, '\ 0' и 0?

В C, как представляется, различия между различными значениями нуля - NULL, NULи 0. Я знаю, что символ ASCII '0'оценивается как 48или 0x30. NULLУказатель обычно определяется как: #define NULL 0 Или #define NULL (void *)0 Кроме того, есть NULперсонаж, '\0'который, кажется, оценивает 0также. Есть ли...

299
Что является ближайшей заменой указателю на функцию в Java?

У меня есть метод, который составляет около десяти строк кода. Я хочу создать больше методов, которые делают одно и то же, за исключением небольшого вычисления, которое изменит одну строку кода. Это идеальное приложение для передачи указателя на функцию для замены этой строки, но в Java нет...

298
Указатели на С: когда использовать амперсанд и звездочку?

Я только начинаю с указателей, и я немного запутался. Я знаю, что &означает адрес переменной и который *может быть использован перед переменной указателя, чтобы получить значение объекта, на который указывает указатель. Но все работает иначе, когда вы работаете с массивами, строками или когда...

273
Когда я должен использовать новое ключевое слово в C ++?

Я использую C ++ в течение короткого времени, и меня интересует новое ключевое слово. Просто я должен использовать это или нет? 1) С новым ключевым словом ... MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2) Без нового ключевого слова ... MyClass myClass; myClass.MyField =...

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

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

264
Почему оператор стрелки (->) в C существует?

Оператор dot ( .) используется для доступа к члену структуры, а оператор стрелки ( ->) в C используется для доступа к члену структуры, на которую ссылается рассматриваемый указатель. Сам указатель не имеет каких-либо членов, к которым можно получить доступ с помощью оператора точки (на самом...

257
Использование оператора стрелки (->) в C

Я читаю книгу под названием «Обучи себя C за 21 день» (я уже выучил Java и C #, поэтому я двигаюсь гораздо быстрее). Я читал главу об указателях, и оператор-> (стрелка) появился без объяснения причин. Я думаю, что он используется для вызова членов и функций (например, эквивалент оператора...

256
Указатель против ссылки

Что было бы лучше, если дать функции исходную переменную для работы: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); или: void func2(unsigned long* val) { *val = 5; } func2(&x); IOW: есть ли какая-то причина, чтобы выбирать между...

255
«Распаковка» кортежа для вызова соответствующего указателя на функцию

Я пытаюсь сохранить в std::tupleразличном количестве значений, которые позже будут использоваться в качестве аргументов для вызова указателя функции, который соответствует сохраненным типам. Я создал упрощенный пример, показывающий проблему, которую я пытаюсь решить: #include <iostream>...

249
Как передать объекты в функции в C ++?

Я новичок в программировании на C ++, но у меня есть опыт работы с Java. Мне нужно руководство о том, как передавать объекты в функции в C ++. Нужно ли передавать указатели, ссылки или не указатели и не ссылки? Я помню, в Java нет таких проблем, поскольку мы передаем только переменную, которая...

246
size_t против uintptr_t

Стандарт C гарантирует, что size_tэто тип, который может содержать любой индекс массива. Это означает, что, по логике, size_tдолжен быть в состоянии содержать любой тип указателя. Я читал на некоторых сайтах, которые я нашел на Google, что это законно и / или должно всегда работать: void *v =...

243
Указатель на элемент данных класса «:: *»

Я наткнулся на этот странный фрагмент кода, который прекрасно компилируется: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } Почему C ++ имеет этот указатель на нестатический член данных класса? Какая польза от этого странного указателя в реальном...