如何在C / C ++中描述指向数组的const指针?

时间:2015-01-02 07:35:05

标签: c++ c arrays pointers syntax

我知道指向int[10] (ptr->int[10])的指针的类型是int (*var)[10], 但如何描述那种打击?

指向const int[10] (ptr->const int[10])

的指针类型

指向const int[10]

(const ptr->int[10])指针的类型

指向const

const int[10] (const ptr->const int[10])指针的类型

2 个答案:

答案 0 :(得分:6)

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.

答案 1 :(得分:1)

像你一样声明变量:

const int somevar[10];

现在用新的typename替换变量名,并在worddef之前添加。

typedef const int ci10_type[10];

现在ci10_typeconst int [10]

的类型

只要您知道如何声明这些类型,您也可以对更复杂的类型执行类似操作。 (功能和数据)

typedef const int *cpi10_type[10];
typedef const int (*pci10_type)[10];

对于指向这些类型的指针,您可以使用:

ci10_type *pci10var;