1.使用指针实现一维数组的传参,写一个冒泡排序的函数void sort_(int *p,int len)
代码展示
#include <stdio.h>
#include <string.h>
void sort_(int *p,int len);
int main(int argc, const char *argv[])
{
int n;
printf("请输入数组的长度:");
scanf("%d",&n);
int a[n];
printf("请输入长度为%d的数组:",n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int *pa = a;
sort_(pa,n);
for(int i=0;i<n;i++,pa++){
printf("%d ",*pa);
}
putchar(10);
return 0;
}
void sort_(int *p,int len){
int temp;
for(int i=0;i<len-1;i++){
for(int j=0;j<=len-i-1;j++){
if(*(p+j) > *(p+j+1)){
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e0afe81697a947879f91d22bf328f775.png)
2.使用二维数组传参实现杨辉三角void fun(int (*p)[100],int h,int l)
代码展示
#include <stdio.h>
#include <string.h>
void fun(int (*p)[100],int h,int l);
int main(int argc, const char *argv[])
{
int a[100][100] = {0};
int h,l;
printf("请输入需要的杨辉三角的行数:");
scanf("%d",&h);
printf("请输入需要杨辉三角的列数:");
scanf("%d",&l);
int (*pa)[100] = a;
fun(pa,h,l);
for(int i=0;i<h;i++){
for(int j=0;j<=i;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
void fun(int (*p)[100],int h,int l){
for(int i=0;i<h;i++){
for(int j=0;j<=i;j++){
if(j == 0 || j == i){
*(*(p+i)+j) = 1;
}else {
*(*(p+i)+j) = *(*(p+i-1)+j) + *(*(p+i-1)+j-1);
}
}
}
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7aa7e93a9f9347c69a54d38b3cab2fe7.png)