为什么C语言的数组参数会退化为指针?
退化的意义:
二维数组参数
等价关系
代码分析:
#include <stdio.h>
void access(int a[][3], int row) //由于数组会退化,所以必须提供长度信息
{
int col = sizeof(*a) / sizeof(int);//求列数
int i = 0;
int j = 0;
printf("sizeof(a) = %d\n", sizeof(a));
for (i = 0; i<row; i++)
{
for (j = 0; j<col; j++)
{
printf("%d\n", a[i][j]);
}
}
}
int main()
{
int a[3][3] = { { 0, 1, 2 },{ 3, 4, 5 },{ 6, 7, 8 } };
int col = sizeof(*a) / sizeof(int);//求列数
int row = sizeof(a) / sizeof(*a); //求行数
printf("col=%d,row=%d\n", col, row);
access(a, 3);
return 0;
}
注意事项: