以以下代码为例:
include<stdio.h>
main()
{
int i, j,a[3][3],*pp;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", &a[i][j]);
void cha(int *p);
pp = &a[0][0];
cha(pp);
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
}
void cha(int *p)
{
int i, j, t;
for(i=0;i<3;i++)
for (j = i; j < 3; j++)
{
t = *(p + 3 * i + j);
*(p + 3 * i + j) = *(p + 3 * j + i);
*(p + 3 * j + i) = t;
}
//return *p;
}
其中:
1.“‘int’和‘int ’的间接级别不同”问题:
a.
片段:
int i, j,a[3][3],pp;
void cha(int *p);
pp = &a[0][0];
cha(pp);
b.
片段:
int a[4][5], i, j;
void aver(int p);
void search1(int p);
void search2(int p);
aver(a);
search1(a);
search2(a);
c.
片段:
void search2(int *p)
{
float avo(int x, int *gg);
int i, j, n2, t; t = 1;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
n2 = *(p + 5 * i + j);
if (n2 < 85) t = 0;
}
if ((t != 0) || (avo(i, p) >= 90))
{
printf("student who is well done: %d\n", i + 1);
}
t = 1;
}
}
中的(avo(i, p) >= 90)
2.矩阵转置问题:
void cha(int *p)
{
int i, j, t;
for(i=0;i<3;i++)
for (j = i; j < 3; j++)
{
t = *(p + 3 * i + j);
*(p + 3 * i + j) = *(p + 3 * j + i);
*(p + 3 * j + i) = t;
}
//return *p;
}
注意不要二次转置
网友评论