¿Son ambas instrucciones de puntero las mismas?Declarar una sintaxis de puntero en una función
void reverse(const char * const sPtr){
}
y
void reverse(const char const *sPtr){
}
¿Son ambas instrucciones de puntero las mismas?Declarar una sintaxis de puntero en una función
void reverse(const char * const sPtr){
}
y
void reverse(const char const *sPtr){
}
No.
const char const *sPtr
es equivalente a const char *sPtr
.
const char *sPtr
dicen que el parámetro sPtr
es un puntero a un const char
.
const char * const sPtr
es un const
puntero a un const char
.
Tenga en cuenta que esto es equivalente en C99 y C11:
(C99, 6.7.3p4) "Si el mismo calificador aparece más de una vez en el mismo especificador-calificador de vinos, ya sea directamente o por medio de una o más typedefs, el comportamiento es el mismo que si solo apareciera una vez ".
pero no en C89, donde const char const *sPtr
es una violación de restricción:
(C90, 6.5.3) "El mismo tipo de clasificación no podrá aparecer más de una vez en la misma lista o una lista especificador de clasificación, ya sea directamente o a través de uno o más typedefs ".
Ok. Gracias. eso tiene sentido. – runners3431
No.
El primero es un puntero const
-const char
.
El segundo es un puntero a const char
.
const
se une a la izquierda oa la derecha, no hay nada a la izquierda.
Gracias por ese bocado. – runners3431
¿Qué estás tratando de lograr?
Si quieres un puntero constante que tiene que poner const
después de la *
int * const a;
Si desea un puntero a const usted tiene que poner la const
antes de la *
const int *a;
Voy a tomar una cadena y simplemente la invierto con una instrucción printf. – runners3431
Es posible que desee para usar algunos 'typedef's. –
@Dan O no. Se desaconseja utilizar 'typedef' para los tipos de punteros de objeto. – ouah
@ouah: ¿quién lo desalienta, y por qué te importaría lo que desalentó alguien que aparentemente no tiene idea de lo que está hablando? –