punteros en c.

Iniciado por aggv1106, 1 Mayo 2016, 01:40 AM

0 Miembros y 1 Visitante están viendo este tema.

aggv1106

Hola!  tengo una consulta sobre punteros, la cuestión es como sigue: se que los punteros sirven para acceder a direcciones de memoria de variables o arreglos etc, mi pregunta es: ¿se puede modificar el valor de una variable (o arreglo) de forma manual, por ejemplo...si se que  la direccion 0028FF14 almacena un entero igual a 2, se puede escribir un código que cambie el valor de esa variable sin escribir *p=x ? (x es un número cualquiera ), es decir un código que más o menos diga "el valor de la variable en la posición 0028FF14 = x o algo así,creo que se entiende a lo que me refiero con lo de "forma manual". Se que esto no es para nada recomendable, pero necesito saber si es esto posible o no.
Desde ya gracias!
pd: si envié en más de un lugar el mismo mensaje, lo siento, fue sin querer

AlbertoBSD

#1
Sin que el puntero apunte a esa variable no lo veo viable, a no ser que se trate de algun overflow... que seria en teoria lo mismo

#include<stdio.h>

int main() {
int i = 2;
char *ptr;
printf("valor de i %i\n",i);
ptr = (char *) &i;
ptr[2] = 'A';
printf("valor de i %i\n",i);
}
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MAFUS

#2
Sí que se puede, lo que debes convertir el literal en un puntero mediante casting. Al fin y al cabo obtienes un puntero creado exproceso y C lo tratará como tal.


#include <stdio.h>

int main() {
   printf("%p", (int*)0xa30b);
   
   return 0;
}