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

612
Visualizações
¿Cuál es la definición de ++p donde p es const char *p en C?

Si necesito iterar sobre una matriz en C, puedo hacer algo como:

 void uselessTest(const char *p) { while(*p) { ++p; } }

Me pregunto qué significa eso en detalle:

  • ¿Prueba, en cada ciclo, if (*p != null) ?
  • Si p = p + 1 , ¿qué significa eso? ¿Pa es un valor numérico? *p debe ser el valor señalado y p la dirección del puntero? Entonces, en este ciclo, p cambia mientras que *p permanece igual.
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

¿Prueba, en cada ciclo, si (*p != null) ?

Diría que es más correcto decir que comprueba si *p!=0 .

Si p = p + 1, ¿qué significa eso? ¿Pa es un valor numérico?

Parece que el estándar C no define qué puntero es internamente. Pero en el siguiente ejemplo, supondré que p tiene una dirección representada como un número entero (que suele ser el caso). En ese caso, en su ejemplo anterior, cuando le agrega uno, p se mueve a la siguiente dirección, por ejemplo, si p fuera 0x1000, después del incremento se convertiría en 0x1001 (Esto se debe a que el tamaño del char es 1, en caso de que p fuera puntero a int se movería cuatro bytes hacia adelante * -el tamaño dado del entero es cuatro).

Entonces, en este ciclo, p cambia mientras que *p permanece igual.

No, de hecho *p intenta desreferenciar p , en otras palabras, obtener contenidos del objeto almacenado en la dirección p . Entonces, por supuesto, si cambia el valor de p , también puede obtener contenido diferente en la nueva dirección. por ejemplo, si el valor inicial de p era 0x1000, después del incremento, será 0x1001 y *p intentará leer el valor en 0x1001, que podría ser diferente del valor almacenado en 0x1000.

* Busque aritmética de punteros para obtener más detalles al respecto

over 4 years ago · Santiago Trujillo Relatório

0

Comprueba en cada iteración si *p != null) y finaliza el ciclo si es nulo.

Aumenta el puntero, ergo, el puntero apunta a la siguiente dirección. Entonces, al usar un ciclo como este, puede iterar sobre los elementos en una matriz.

Entonces, básicamente, lo que hace este ciclo: itera sobre los caracteres en la matriz, hasta que alcanza un carácter \0 de terminación. En cada iteración, el puntero p se incrementa para apuntar al siguiente carácter.

over 4 years ago · Santiago Trujillo Relatório

0

¿Prueba, en cada ciclo, si (*p != null) ?

No hay un null en C. Hay un terminador NUL ( '\0' ) y NULL . Este último está asociado con punteros.

el cheque es

 if (*p != 0)

que es lo mismo que

 if (*p != '\0')

Si p = p + 1, ¿qué significa eso?

Mueve el puntero sizeof(*p) bytes hacia adelante.

¿Pa es un valor numérico?

p es un const char* , o en otras palabras, un puntero a char .

*p debe ser el valor señalado y p la dirección del puntero?

*p son los datos a los que apunta el puntero p y p es la dirección a la que apunta el puntero (que es diferente de la dirección de p )

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