elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)  (Leído 1,902 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
[C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)
« en: 4 Junio 2016, 18:40 pm »

Hola. Quería preguntar si el hecho de que un arreglo se apunte a si mismo es coincidencia o es una característica de ANSI C, es decir, la dirección del arreglo y la dirección a la que apunta el arreglo es la misma (al menos eso me pasa con MinGW-w64).

Código
  1. int arreglo[4];
  2.  
  3. if(arreglo == &arreglo) { // Siempre me da 'true'
  4.    ...
  5. }

Gracias


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)
« Respuesta #1 en: 4 Junio 2016, 19:46 pm »

No es coincidencia el estándar garantiza que arreglo y &arreglo siempre apuntaran a la misma dirección (el primer elemento del array) pero tienen tipos diferentes no es lo mismo hacer

Código
  1. arreglo + 1
Y
Código
  1. &arreglo + 1


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)
« Respuesta #2 en: 4 Junio 2016, 21:27 pm »

En 32 bits sí que sería lo mismo XDD

En 64 bits no, pues la primera se incrementa en 4 y la segunda en 8 :P

Gracias :D
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)
« Respuesta #3 en: 5 Junio 2016, 23:14 pm »

En 32 bits sí que sería lo mismo XDD

En 64 bits no, pues la primera se incrementa en 4 y la segunda en 8 :P

Gracias :D

Supongamos el siguiente arreglo:

Código
  1. int arreglo[8];

arreglo es de tipo int* un puntero al primer elemento de arreglo
&arreglo es de tipo int (*)[8] un puntero a un arreglo de 8 enteros

Por lo tanto si hacemos arreglo + 1 incrementara 4 bytes (suponiendo int == 4 bytes) pero &arreglo + 1 sabiendo que es un puntero a arreglo de 8 ints el incremento sera 4 * 8 = 32 saltamos 8 bytes justo despues del final de arreglo. Puedes comprobar esto haciendo:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int array[8];
  6.    int n = *(&array + 1) - array;
  7.    printf("Size array = %d\n", n); //Debe imprimir 8
  8.  
  9.    return 0;
  10. }
  11.  
  12.  
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos)
« Respuesta #4 en: 5 Junio 2016, 23:17 pm »

Ups. No consideré el tamaño del arreglo... qué despiste el mío XDD Gracias por la aclaración
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre Arreglos PHP.
PHP
mokoMonster 4 1,821 Último mensaje 20 Marzo 2010, 23:01 pm
por mokoMonster
Duda sobre Arreglos(Arrays)
Java
Senior++ 2 1,400 Último mensaje 7 Diciembre 2012, 17:09 pm
por Senior++
[PREGUNTA] Pregunta sobre la licencia libre GPL
Programación General
Noxware 3 1,494 Último mensaje 23 Abril 2014, 20:18 pm
por Noxware
[C] (Consulta) Mezclando punteros y arreglos.
Programación C/C++
class_OpenGL 5 3,344 Último mensaje 16 Mayo 2016, 18:51 pm
por class_OpenGL
(Consulta) [C] ¿Usar los corchetes para delimitar caracteres es ANSI?
Programación C/C++
class_OpenGL 7 3,364 Último mensaje 18 Junio 2016, 19:58 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines