elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Punteros a punteros en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Punteros a punteros en C  (Leído 2,043 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
(Consulta) Punteros a punteros en C
« en: 19 Julio 2016, 11:18 am »

Hola, muy buenas. Ante todo gracias por pasarlos, y por leer mi duda. El problema que tengo es con el siguiente código:

Código
  1. void funcion(const char * const * cadenas) {
  2. cadenas = 0xFFFFFFFF;
  3. }

Si yo compilo este código, no me dará un error como tal (simplemente una advertencia). Lo que me resulta raro es que si este código compila, significa que el último puntero es el que está tomando prioridad, porque el const opera sobre lo que tiene a su izquierda (a no ser que esté a la izquierda del todo, que en cuyo caso, opera sobre lo que tiene a la derecha). Es decir:

Código
  1. void funcion(const char * const * cadenas)
  2.               ^

Este const opera sobre el char

Código
  1. void funcion(const char * const * cadenas)
  2.                        ^   ^

Este const opera sobre el puntero señalado

Entones de esto deducimos que el único puntero no constante es el último. Al poder modificar en la función el valor del puntero dado, eso quiere decir que el último puntero es el que está tomando prioridad, mientras que debería tomar prioridad el primer puntero, es decir, este:

Código
  1. void funcion(const char * const * cadenas)
  2.                        ^

La duda final podría ser: por lo visto no entiendo/sé muy bien las reglas de prioridad, porque yo creía que al ser el mismo operador (*), tenía prioridad el de más a la izquierda, pero según lo expuesto, y en este caso, tiene más prioridad el de más a la derecha...


« Última modificación: 19 Julio 2016, 13:26 pm por class_OpenGL » En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Punteros a punteros en C
« Respuesta #1 en: 19 Julio 2016, 14:29 pm »

Bueeno. Me responderé a mi mismo xD. Aunque haya dejado la pregunta aquí, tenía tanta curiosidad que seguí investigando. La respuesta la he descubierto aquí:
http://c.conclase.net/curso/index.php?cap=014#inicio

Lo que pasa es que el operador *, para declarar variables, es especial (como otros pocos). Lo que tiene de especial es que se evalúa de derecha a izquierda, y si hay varios operadores con la misma prioridad que el *, se evalúan de derecha a izquierda, por lo que, en efecto, el último asterisco tiene más prioridad que el primero, porque es el que está más a la derecha.

Sé que lo he explicado un poco mal, así que recomiendo ver la página que he puesto :D


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta punteros (C)
Programación C/C++
HRSLASH 8 4,026 Último mensaje 3 Septiembre 2012, 07:38 am
por do-while
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 5,204 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Punteros dobles / Punteros a puntero.
Programación C/C++
NOB2014 5 8,471 Último mensaje 13 Abril 2016, 16:00 pm
por MAFUS
Representación visual de punteros y punteros a punteros.. « 1 2 »
Programación C/C++
digimikeh 13 4,884 Último mensaje 4 Mayo 2019, 01:54 am
por RayR
Consulta sobre punteros y doble punteros
Programación C/C++
palacio29 4 3,427 Último mensaje 17 Mayo 2019, 20:40 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines