1.思维导图
2.使用指针实现一维数组的传参,写一个冒泡排序的函数void sort_(int *p,int len)
int h = 10,l = 10;
fun(p,10,10);
return 0;
}
ubuntu@ubuntu:day7$
ubuntu@ubuntu:day7$ cat 2.c
#include <stdio.h>
#include <string.h>
void sort_(int *p,int len);
void sort_(int *p,int len)
{
int *per = p;
int i,j;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-i-1;j++)
{
if(*(p+j)<*(p+j+1))
{
*(p+j) = *(p+j+1)^*(p+j);
*(p+j+1) = *(p+j+1)^*(p+j);
*(p+j) = *(p+j+1)^*(p+j);
}
}
}
for(int k = 0;k<len;k++)
printf("%d ",*(per+k));
}
int main(int argc, const char*argv[])
{
int str[10]={5,55,44,1,6,7,62};
int *p = str;
int len = 7;
sort_(p,len);
return 0;
}
62 55 44 7 6 5 1
3.使用二维数组传参实现杨辉三角void fun(int (*p)[10],int h,int l)
#include <stdio.h>
#include <string.h>
void fun(int (*p)[10],int h,int l);
void fun(int (*p)[10],int h,int l)
{
int i,j;
for(i=0;i<h;i++)
{
for(j=0;j<l;j++)
{
if(j<1)
{
*(*(p+i)+j) = 1;
}
else if(i>0)
{
*(*(p+i)+j) = *(*(p+i-1)+j-1) + *(*(p+i-1)+j);
}
}
}
for(i=0;i<h;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",*(*(p+i)+j));
}
printf("\n");
}
}
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1