我使用malloc()声明一个整数矩阵:
int *m;
m = malloc(10 * sizeof(int));
我可以使用数组表示法[]从矩阵中选择一个元素吗?
例如:
我使用*(m+1)
来选择矩阵m的第二个元素。
我可以通过这种表示法选择矩阵m的第二个元素:m[1]
?
答案 0 :(得分:2)
是的,这是可能的。但是,如果您将其指定为静态大小,则可以在声明中执行int m[10]
。
答案 1 :(得分:1)
a[i]
已定义为*(a+i)
,所以是的,[]
下标运算符适用于数组和指针表达式。
除非它是sizeof
或一元&
运算符的操作数,或者是用于在声明中初始化另一个数组的字符串文字,否则类型为表达式 “T
的N元素数组”被转换(“衰变”)为“指向T
的指针”的表达式,表达式的值是数组的第一个元素的地址
因此,对于数组a
,如果编写a[i]
,表达式 a
将从数组类型转换为指针类型,并且[]
运算符应用于生成的指针表达式。对于指针p
,不需要转换,[]
运算符直接应用于p
。