Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
¿Cómo es que se usa una variable antes de declararla?

Estoy confundido acerca de una función dictCreate() en el archivo dict.c de la implementación de redis . Voy a pegar el código aquí:

 /* Create a new hash table * T = O(1) */ dict *dictCreate(dictType *type, void *privDataPtr) { dict *d = zmalloc(sizeof(*d)); _dictInit(d, type, privDataPtr); return d; }

la variable d se usa en zmalloc(sizeof(*d)) , pero teóricamente existirá cuando se ejecute esta línea. Entonces, mi pregunta es ¿cómo es posible usar la variable d antes de que se declare?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

sizeof no es una función, es un operador. Se ejecuta (evalúa, para ser exactos) en el momento de la compilación, por lo que el alcance o la duración en la que está pensando d , no se aplica aquí. Todo lo que necesita saber es el tipo de *d y eso se conoce en tiempo de compilación. Suficiente.

over 4 years ago · Santiago Trujillo Report

0

La declaración

 dict *d = zmalloc(sizeof(*d));

es equivalente a

 dict *d; d = zmalloc(sizeof(*d));

Entonces, dict *d declara d como un puntero al tipo de dictado y = dict = zmalloc(sizeof(*d)); utilizado para la inicialización. dict *d = zmalloc(sizeof(*d)); declara d como dict * y luego lo inicializa en una sola línea.

over 4 years ago · Santiago Trujillo Report

0

Su suposición es incorrecta, el objeto existe a partir del signo = que inicia la inicialización. Por ejemplo, en un inicializador, puede usar la dirección del objeto que está inicializando.

Aquí, además, no se necesita acceso al objeto en sí, sizeof solo usa el tipo en este caso.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!