[C] char * vs char []

Iniciado por GGZ, 22 Marzo 2016, 01:26 AM

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

HardForo

Y el puntero como tal donde se guarda ?

Me imagino que si se declara localmente en la pila y sino en heap. Es asi ?
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

MAFUS

Un puntero es una variable más y sigue las mismas reglas que todas las variables.

HardForo

#12
En StackOverflow tambien dicen eso.... "es una  tipo (de variable) mas"

"Pointers are just a type of variable, so they can be wherever you want them to be (on the heap if you malloc() them, on the stack if they're local variables, or in the data section if they're global)."

Sin embargo, no entiendo bien el tema de malloc() aqui: ¿ que tiene que ver si se reserva memoria para el contenido con donde queda el puntero en memoria ? (mas alla del caso particular de un puntero nulo)
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

ivancea96

Cita de: boctulus en 17 Abril 2016, 17:47 PM
Sin embargo, no entiendo bien el tema de malloc() aqui: ¿ que tiene que ver si se reserva memoria para el contenido con donde queda el puntero en memoria ? (mas alla del caso particular de un puntero nulo)

De la misma forma que puedes reservar memoria dinámica para, por ejemplo, una estructura o un int, puedes reservar memoria dinámica para un puntero.

int** p = (int**)malloc(sizeof(int*));
*p = (int*)malloc(sizeof(int));
**p = 5;


En este caso habría 2 punteros: uno en el heap (*p), y el otro en la pila (p).

HardForo

Gracias Ivan, me imaginaba venia por punteros dobles el tema.... estoy probando y no me compila:

int main(void)
{
// En este caso habría 2 punteros: uno en el heap (*p), y el otro en la pila (p)

int** p = (int**)malloc(sizeof(int*)); 
*p = (int*)malloc(sizeof(int));  // en la pila
**p = 5;
}


12   19   C:\C++\heap_stack_ptrs.c   [Warning] incompatible implicit declaration of built-in function 'malloc'


Gracias desde ya....... lo miro y lo veo bien pero no quiere compilarse
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

ivancea96

Pon #include <stdlib.h>, que es donde va malloc.

HardForo

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *