Preguntas etiquetadas con pointers

329
Punteros vs. valores en parámetros y valores de retorno

En Go hay varias formas de devolver un structvalor o una porción del mismo. Para los individuales que he visto: type MyStruct struct { Val int } func myfunc() MyStruct { return MyStruct{Val: 1} } func myfunc() *MyStruct { return &MyStruct{} } func myfunc(s *MyStruct) { s.Val =...

309
¿Cuál es la diferencia entre NULL, '\ 0' y 0?

En C, parece haber diferencias entre varios valores de cero NULL, NULy 0. Sé que el carácter ASCII se '0'evalúa como 48o 0x30. El NULLpuntero generalmente se define como: #define NULL 0 O #define NULL (void *)0 Además, está el NULpersonaje '\0'que parece evaluar 0también. ¿Hay momentos en...

298
Punteros en C: ¿cuándo usar el ampersand y el asterisco?

Estoy empezando con punteros y estoy un poco confundido. Sé que &significa la dirección de una variable y que *se puede usar frente a una variable de puntero para obtener el valor del objeto al que apunta el puntero. Pero las cosas funcionan de manera diferente cuando trabaja con matrices,...

264
¿Por qué existe el operador de flecha (->) en C?

El .operador dot ( ) se usa para acceder a un miembro de una estructura, mientras que el operador de flecha ( ->) en C se usa para acceder a un miembro de una estructura al que hace referencia el puntero en cuestión. El puntero en sí no tiene ningún miembro al que se pueda acceder con el...

257
Uso del operador de flecha (->) en C

Estoy leyendo un libro llamado "Teach Yourself C in 21 Days" (ya aprendí Java y C #, así que me estoy moviendo a un ritmo mucho más rápido). Estaba leyendo el capítulo sobre punteros y el operador-> (flecha) apareció sin explicación. Creo que se usa para llamar a miembros y funciones (como el...

256
Puntero vs. referencia

Lo que sería una mejor práctica al dar a una función la variable original con la que trabajar: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); o: void func2(unsigned long* val) { *val = 5; } func2(&x); IOW: ¿Hay alguna razón para elegir uno sobre...

246
size_t vs. uintptr_t

El estándar C garantiza que size_tes un tipo que puede contener cualquier índice de matriz. Esto significa que, lógicamente, size_tdebería poder contener cualquier tipo de puntero. Leí en algunos sitios que encontré en Google que esto es legal y / o siempre debería funcionar: void *v =...

242
Puntero al miembro de datos de clase ":: *"

Me encontré con este extraño fragmento de código que se compila bien: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } ¿ Por qué C ++ tiene este puntero a un miembro de datos no estático de una clase? ¿De qué sirve este extraño puntero en código...