Reputation: 151
I know the type which is pointer to an int[10] (ptr->int[10])
is int (*var)[10]
,
but how to describe those of type blow?
the type which is pointer to the const int[10] (ptr->const int[10])
the type which is const
pointer to the int[10]
(const ptr->int[10])
the type which is const
pointer to the const int[10] (const ptr->const int[10])
Upvotes: 0
Views: 2680
Reputation: 206577
int (*ptr1)[10] = malloc(sizeof(int)*10); // Pointer to int[10]
const int (*ptr2)[10] = malloc(sizeof(int)*10); // Pointer to const int[10]
int (* const ptr3)[10] = malloc(sizeof(int)*10); // const Pointer to int[10]
const int (* const ptr4)[10] = malloc(sizeof(int)*10);// const Pointer to const int[10]
*ptr1[0] = 10; // OK.
*ptr2[0] = 10; // Not OK.
*ptr3[0] = 10; // OK.
*ptr4[0] = 10; // Not OK.
ptr1 = realloc(ptr1, sizeof(int)*10); // OK.
ptr2 = realloc(ptr2, sizeof(int)*10); // OK.
ptr3 = realloc(ptr3, sizeof(int)*10); // Not OK.
ptr4 = realloc(ptr4, sizeof(int)*10); // Not OK.
Upvotes: 7
Reputation: 30489
Declare the variable as you do:
const int somevar[10];
Now replace variable name with new typename and prepend the word typedef.
typedef const int ci10_type[10];
Now ci10_type
is the type of const int [10]
You can do similar for more complex types also as long as you know how to declare those. (Functions as well as data)
typedef const int *cpi10_type[10];
typedef const int (*pci10_type)[10];
For pointer to these types you can use:
ci10_type *pci10var;
Upvotes: 1