0

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])

4
  • 1
    Use typedef. Problem solved. Commented Jan 2, 2015 at 7:37
  • what is type blow? is it defined somewhere? :p Commented Jan 2, 2015 at 7:46
  • @thang type blow is something you get in C++ compiler errors when you make a mistake in template code. Commented Jan 2, 2015 at 7:57
  • oh, well, that blows. Commented Jan 2, 2015 at 8:08

2 Answers 2

7
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.
Sign up to request clarification or add additional context in comments.

Comments

1

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;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.