/ / Declarar variables (Punto exacto en la memoria) [cerrado] - c #, c ++

Declaración de variables (punto exacto en la memoria) [cerrado] - c #, c ++

Si tengo una clase, ¿es posible declarar a las instancias de esta clase "lado a lado" en la memoria?

Además, ¿sería posible desplazar un puntero de uno a otro?

Respuestas

3 para la respuesta № 1

En C ++, absolutamente puede hacer esto. Se llama un formación.

De hecho, la indexación de matriz es lo mismo que decir *(pointerToBeginng + index). No estoy seguro de lo que quiere decir con "Bit shift un puntero", pero ciertamente puede hacer aritmética de punteros para cambiar elementos.

Las matrices de C # son probablemente las mismas (no están tan seguras de esto) pero de todos modos no se usan los punteros en C #. Este artículo (MSDN) sugiere que los arrays en C # son contiguo, pero eso es de C # 2.0 por lo que podría han cambiado (aunque eso es poco probable).

Sin embargo, en C # todas las clases son tipos de referencia por lo que una matriz de ellos es solo una matriz dereferencias Aún tiene que usar la referencia (básicamente un puntero) para acceder al objeto real. En ese sentido, no puede declarar dos instancias de una clase y garantizar que estén "lado a lado". Esto normalmente no importa ya que no usa punteros en C # (puede hacerlo, pero generalmente don "t).

podría usar una struct en lugar de un class para permitir un bloque contiguo de objetos en C #. En este punto, la aritmética de punteros funcionaría como en C ++.