首先自定义函数包含四个部分,返回类型、函数名、函数的参数(形式参数)、函数体。
关于形参,以下面为例:函数头可以是void del(int *a, int n, int i)、也可以是void del(int a[], int n, int i)。因为调用函数的时候,传入的是数组的首地址。
遍历的时候我们也可以用指针(*p++)。
使用自定义函数的时候,我们传数组的时候,不能是这样的(del(a[n],n,x)),这样我们传入的就不是数组的首地址了,而是数组a的第n个数据。这时候编译器也会提示我们。
这也是为什么自定义函数不起作用的原因。
#include<stdio.h>
void del(int *a, int n, int i);
int main()
{
int n,x;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
del(a,n,x);
for(int i=0;i<n-1;i++){
printf("%d ",a[i]);
}
return 0;
}
void del(int *a, int n, int i){
for(;i<n-1;i++){
a[i]=a[i+1];
}
}