Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
estático delante del número en el programa ac

Así que estaba leyendo un blog sobre la optimización de la clasificación de bloques de un int y la implementación estaba en c. me llego esta linea que no entiendo:

 void nibble_sort_bucket(uint64_t buf[static 1024]) {

El búfer es básicamente datos para ordenar y cada int en él obtiene sus bloques de 4 bits ordenados, por lo que es básicamente para la evaluación comparativa. Cuando busqué el uso de estática en ci encontré dos cosas.

  1. Mantener las definiciones de funciones privadas en un archivo.
  2. Mantener un valor variable entre las llamadas de una función.

Ninguno de estos tiene sentido aquí. ¿Alguien puede explicar por qué alguna vez escribirías estático delante de un número y qué hace eso?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Ese es el tercer significado de la palabra clave static , que se introdujo en C99, pero no es una característica muy conocida. Su propósito es decirle al compilador que está pasando una matriz con al menos 1024 elementos.

De C99 (N1256) §6.7.5.3/p7 Declaradores de funciones (incluidos los prototipos) (énfasis mío):

Si la palabra clave static también aparece dentro de [ y ] de la derivación del tipo de matriz, entonces, para cada llamada a la función, el valor del argumento real correspondiente proporcionará acceso al primer elemento de una matriz con al menos tantos elementos como se especifica por la expresión de tamaño .

Existe cierta discrepancia entre las implementaciones reales. Por ejemplo, clang lanza una advertencia, cuando la matriz pasada no satisface la subcláusula anterior. Por ejemplo:

 #include <stdio.h> void foo(int a[static 10]) {} int main() { int array[8] = {0}; foo(array); }

da:

advertencia: el argumento de la matriz es demasiado pequeño; contiene 8 elementos, el destinatario requiere al menos 10 [-Warray-bounds]

mientras que la implementación de gcc no hace nada (consulte el error 50584 de GCC para obtener más información).

over 4 years ago · Santiago Trujillo Relatório

0

Esta instrucción buf[static 1024] le dice al compilador que buf tiene al menos 1024 caracteres. Se usa para la optimización, en otras palabras, quiere decir que buf nunca puede ser nulo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda