1、使用指针实现一维数组的传参,并写一个冒泡排序的函数
main.c
#include "func.h"
int main(int argc,const char * argv[])
{
int n = 0;
printf("请输入数组项数:");
scanf("%d",&n);
int arr[n];
printf("请输入数组元素:");
for(int i = 0;i<n;i++)
{
scanf("%d",&arr[i]);
}
maopao(arr,n);
return 0;
}
func.c
#include "func.h"
void maopao(int *p , int len)
{
for(int i = 1;i<len;i++)
{
for(int j = 0;j<len-i;j++)
{
if(p[j] > p[j+1])
{
int temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
for(int i = 0;i<len;i++)
{
printf("%d\t",p[i]);
}
}
func.h
#ifndef __FUNC_H__
#define __FUNC_H__
#include <stdio.h>
void maopao(int *p , int len);
#endif
2、利用指针实现二维数组的传参,实现杨辉三角
main.c
#include "func.h"
int main(int argc,const char * argv[])
{
int arr[100][100] = {0};
int l;
scanf("%d",&l);
yh(arr,l,l);
for(int i = 0;i<l;i++)
{
for(int j = 0;j<=i;j++)
{
printf("%-3d",arr[i][j]);
}
printf("\n");
}
return 0;
}
func.c
#include "func.h"
void yh(int (*p)[100] , int h, int l)
{
for(int i = 0;i<l;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);
}
}
}
}
func.h
#ifndef __FUNC_H__
#define __FUNC_H__
#include <stdio.h>
void yh(int (*p)[100] , int h, int l);
#endif