#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void main33()
{
int i
= 0, j
= 0, tmp
= 0;
int a
[5] = {3, 4, 5, 6, 2};
int myarray
[3][5];
int (*p
)[5] = &a
;
for (i
=0; i
<5; i
++)
{
printf("%d\n", (*p
)[i
]);
}
for (i
=0; i
<3; i
++)
{
for (j
=0; j
<5; j
++)
{
myarray
[i
][j
] = tmp
++;
}
}
printf("myarray:%d myarray+1:%d\n", myarray
, myarray
+1);
printf("\n&a:%d &a+1:%d \n", &a
, &a
+1);
p
= myarray
;
for (i
=0; i
<3; i
++)
{
for (j
=0; j
<5; j
++)
{
p
[i
][j
] = tmp
++;
printf("\n%d ", p
[i
][j
]);
}
}
system("pause");
}
int printf2Array(int *a
, int num
)
{
int i
= 0;
for (i
=0; i
<num
; i
++)
{
printf("%d ", a
[i
]);
}
}
void main35()
{
int myarray
[3][5];
int tmp
= 0;
int *p
= NULL;
int i
=0, j
= 0;
for (i
=0; i
<3; i
++)
{
for (j
=0; j
<5; j
++)
{
myarray
[i
][j
] = tmp
++;
*(*(myarray
+i
)+j
) = tmp
++;
}
}
p
= (int *)myarray
;
printf2Array(p
, 3*5);
system("pause");
}
1、不管是几维数组,都是线性存储的。所以会存在多维数组做函数参数的退化问题 2、多维数组做函数参数 二维数组,能勉强表达出来。但是三维数组,四维数组,,就表达不出来了。 结论:指针做函数参数,有效内存维数,只能表达2级。。如果看到3级指针 4级指针,它表示的不是内存的维数。
转载请注明原文地址:https://ipadbbs.8miu.com/read-14159.html