答案是C,当然可以递归定义,递归定义就是递归函数的定义。
对于A,说法是正确的。如果以数组名作为参数,其实传递的就是地址,就是实参的地址。所以,该地址的内容变化,实参数据当然也变了,因为操作的同一个地址。
例如:
【测试代码】:
#include <stdio.h>
#include <unistd.h>
void add(int x[],int len){
x[0] = 1;
x[1] =2;
printf("x addr=%p\n",x);
len = 6;
printf("[add] len = %d\n",len);
//return x[0]+ x[1];
}
int main() {
int data[2] = {3,5};
int len = 1;
printf("函数调用前=====\n");
printf("data addr=%p\n",data);
printf("data[0]: %d\n",data[0]);
printf("data[1]: %d\n",data[1]);
//int res = add(data,len);
add(data,len);
//printf("add res: %d\n",res);
printf("函数调用后=====\n");
printf("data[0]: %d\n",data[0]);
printf("data[1]: %d\n",data[1]);
printf("[main] len =%d\n",len);
return 0;
}
【运行结果】:
函数调用前=====
data addr=0x7ffeed2258c0
data[0]: 3
data[1]: 5
x addr=0x7ffeed2258c0
[add] len = 6
函数调用后=====
data[0]: 1
data[1]: 2
[main] len =1
函数递归定义就是递归函数,当然可以啊
A的问题是,指针作为参数时,是无法实现指针自身地址的修改的
当然可以,函数递归,即自己调用自己,关于详细,可以找篇博客看看,http://t.csdn.cn/jw98F