#include<stdio.h>
int printarr(int arg[10]){
int i=1;
int ab[10]={9,8,7,6,5,4,3,2,1,0};
arg=ab;//不会改变原来数组的值,因为数组形参可以理解是指针的复制,现在复制的指针向另外一个地方
//如果arg[0]=1;这样是会改变原来数组的元素值,指针所指向的地址的值,可以认为数组指针的复制 也是指向 实参的地址
for (i=0;i<10;++i){
printf("%d\n",arg[i]);
}
return arg[0];
}
int main(void)
{
int arr[10]={0,1,2,3,4,5,6,7,8,9};
printarr(arr);
printf("%d\n",arr[0]);
return 0;
}
函数是可以调用自己的,这样就形成了递归,注意递归的终止条件,不然会死循环。
函数可以嵌套定义的。
int main()
{
int fun(int a){
return a * a;
}
fun(3);
}
int fun(int b){}
形参数组的改变对实参没影响,但是对数组元素的改变会对实参产生影响。
int f(int *a,int b)
{
int *c;
a=c; //对实参没影响,指针a由指向实参指向了c的内存。实参依然在那里。
a[0]=2;//改变了实参元素
}
改变的是数组名,形参不影响实参内容。
https://blog.csdn.net/weixin_50614575/article/details/125479154
函数不可以嵌套定义是对的,函数可以递归的定义,相当于函数可以递归的使用。总的来说,函数不可以嵌套定义,但可以嵌套使用(递归)