是否可以在C中使用带指针的符号[]?

时间:2015-06-26 15:37:40

标签: c arrays notation

我使用malloc()声明一个整数矩阵:

int *m;
m = malloc(10 * sizeof(int));

我可以使用数组表示法[]从矩阵中选择一个元素吗?

例如: 我使用*(m+1)来选择矩阵m的第二个元素。 我可以通过这种表示法选择矩阵m的第二个元素:m[1]

2 个答案:

答案 0 :(得分:2)

是的,这是可能的。但是,如果您将其指定为静态大小,则可以在声明中执行int m[10]

答案 1 :(得分:1)

a[i] 已定义*(a+i),所以是的,[]下标运算符适用于数组和指针表达式。

除非它是sizeof或一元&运算符的操作数,或者是用于在声明中初始化另一个数组的字符串文字,否则类型为表达式T的N元素数组”被转换(“衰变”)为“指向T的指针”的表达式,表达式的值是数组的第一个元素的地址

因此,对于数组a,如果编写a[i]表达式 a将从数组类型转换为指针类型,并且[]运算符应用于生成的指针表达式。对于指针p,不需要转换,[]运算符直接应用于p