printf("valor...... %s ", (char*)punt);
printf("el valor.... %i\n", *(int*)punt);
printf("valor de la memoria: %i", &punt[1]);
#include <stdio.h>#include<stdlib.h>#include<string.h>int main(){ void *punt;punt = malloc(20 * sizeof(char));strcpy(punt, "hola mundo\n");printf("el valor al que apunta es: %s \n", (char*)punt); //aca no se referenciaprintf("direccion de memoria..: %d\n",&punt);free(punt);punt = malloc(sizeof(int));*(int*)punt = 1;printf("el valor apuntado es: %i\n", *(int*)punt); //aca si se referencia el punteroprintf("direccion de memoria..: %d\n",&punt);printf("direccion de memoria..: %d\n",&punt[1]);//porque esto no se puede?printf("direccion de memoria..: %d\n",&punt[2]);printf("direccion de memoria..: %d\n",&punt[3]);free(punt);return 0;}
buenas tardes amigos, dado este sencillo codigo tengo las siguientes dudas:1) porque al mostrar en pantalla el valor apuntado hacia un vector, no se referencia al puntero?
porque no puedo tomar la direccion especifica cuando apunto a una direccion dinamica? Código: [Seleccionar] void *punt; punt = malloc(20 * sizeof(char)); printf("valor de la memoria: %i", &punt[1]);
void *punt; punt = malloc(20 * sizeof(char)); printf("valor de la memoria: %i", &punt[1]);
char *punt; punt = (char*) malloc(20 * sizeof(char)); // convertimos lo que devuelve malloc a puntero a char printf("valor de la memoria: %i", &(punt[1])); // Es recomendable desambiguar con paréntesis, porque [1] es una operación válida en un puntero que no sea void*. Es decir (&punt)[1] también es válido y no es lo mismo.