2012-04-08 149 views
6

Recientemente encontré este video en Programming Paradigms y el prof. términos usados ​​como Asteriscos, Estrella y Ampersand.C++: Asteriscos, Signo y Estrella?

Esto fue lo que la forma en que utiliza los operadores:

int i = 37; 
float f = *(float*)&i; 

Y cómo se expresó la línea 2 al escribir que:

flotador "f" es igual a la estrella del flotador asterisco, signo de i

Entiendo lo que significan asterisco y ampersand, pero ¿cuál es la importancia de usar star aquí? ¿Es sinónimo de asterisco?

+5

Olvidó mencionar los paréntesis. –

+5

... y el punto y coma. – Blastfurnace

+0

hace que me pregunte, si usted dice nada en absoluto, por qué no decir simplemente lo que hace en su lugar ... – Bart

Respuesta

8

El * después del float se utiliza para formar un tipo. Muy a menudo cuando se refiere a un tipo de puntero en palabras, las personas dicen "estrella" después del tipo, más bien "puntero", por ejemplo. "malloc devuelve una estrella vacía". Nunca escuché a nadie usar "asterisco" para referirse a un tipo.

Al comienzo, el * se usa para desviar el puntero y acceder así al valor al que apunta (interpretado como float debido al siguiente modelo). De nuevo, en mi propia experiencia, nunca escuché a nadie usar "asterisco" aquí. La gente tiende a decir "desreferencia" para describir la operación que se está realizando.

No leería demasiado.Hay dos contextos diferentes aquí, como lo han visto correctamente, y siempre que entiendan lo que significan desde el punto de vista de C++, está bien.

+0

¡Gracias! Esto efectivamente responde por qué el prof dijo "estrella" en lugar de "asterisco". – witherspoon

0

Creo que el presentador solo quería evitar un silencio incómodo mientras escribía el código. Hasta donde yo sé, no hay diferencia entre el asterisco y la estrella en este contexto.

2
float f = *(float*)&i; 

En este caso left * and right * tiene diferentes elementos semánticos. Izquierda * significa valor por refencia. Derecha * declara el tipo de referencia.

+0

"tiene una semántica diferente" Sin degradar a la pronunciación, sigue siendo el mismo símbolo. – SigTerm

+0

Sí, por supuesto) –

1

¿Es asterisco?

Sí. Shift + 8 en MY teclado de Windows. Su ejemplo demuestra por qué no debe intentar leer el símbolo del sistema C++ en voz alta por símbolo. "Igual" en C++ es "==". "=" es asignación. Además, olvidó decir sobre paréntesis y punto y coma. En este punto (4 errores en una sola línea de código) podría haber escrito la maldita cosa en silencio.

Hubiera sido mucho mejor si el tío leer esta parte:

float f = *(float*)&i; 

algo como esto:

"Tomar puntero a i, C-estilo echarás en puntero a flotar, desreferenciar y asigne un valor a la variable flotante f ". Tiene mucho más sentido ese galimatías de "estrella/asterisco".

P.S. Si realmente te encantan los trabalenguas, puedes intentar leer en voz alta cualquier código que use boost, iostreams, operador < <, moldes, operaciones bit a bit y "camel case" para distinguir entre clases y métodos. Tal ejercicio no mejorará sus habilidades de programación, por supuesto ...

+2

SHIFT + 8 es "(" en mi teclado (¡Windows también!). No debe suponer que todos los teclados tienen el mismo diseño en todo el mundo –

+3

-1: El OP sabe que es el mismo símbolo . Creo que es muy grosero la pregunta es simplemente preguntando si había un significado para el uso de los dos términos diferentes en función de los dos contextos diferentes en los que se utilizó * – Troubadour

+0

@Troubadour:.. "Creo que es muy grosero" I Don No creo que sea muy grosero, y no fue pensado para ser grosero. Por lo tanto, si * usted * piensa que es grosero es porque está sacando conclusiones. "significado para el uso de los dos términos diferentes" No hay no tenía ninguna importancia. Por lo que sé, "estrella" y "asterisco" no son parte de alguna conocida jerga de C++ y no suelen referirse a "derefernece" o "cast". Para distinguirlo, tendría sentido usar mejores términos - "derefernece" y "elenco". – SigTerm

Cuestiones relacionadas