2008-10-13 32 views

Respuesta

15

Puede, si los punteros apuntan a objetos globales:

// In global scope 
int x, y; 
const struct {int *px, *py; } s = {&x, &y}; 
5
const struct mytype foo = {&var1, &var2}; 
1

una estructura const puede solamente pueden inicializar estáticamente.

0

Pero si hay algo de struct de la siguiente manera:

struct Foo 
{ 
    const int a; 
    int b; 
}; 

y queremos crear dinámicamente el puntero a la struct usando malloc, por lo que puede jugar el truco:

struct Foo foo = { 10, 20 }; 
char *ptr = (char*)malloc(sizeof(struct Foo)); 
memcpy(ptr, &foo, sizeof(foo)); 
struct Foo *pfoo = (struct Foo*)ptr; 

esto es muy útil especialmente cuando alguna función necesita devolver el puntero a struct Foo

Cuestiones relacionadas