这个问题中为什么A是错误的C为什么是正确的 函数中不是不可以递归定义吗
3条回答 默认 最新
- liranke 2022-10-28 10:47关注
答案是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本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 麒麟V10桌面版SP1如何配置bonding
- ¥15 Marscode IDE 如何预览新建的 HTML 文件
- ¥15 K8S部署二进制集群过程中calico一直报错
- ¥15 java python或者任何一种编程语言复刻一个网页
- ¥20 如何通过代码传输视频到亚马逊平台
- ¥15 php查询mysql数据库并显示至下拉列表中
- ¥15 freertos下使用外部中断失效
- ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
- ¥15 devserver配置完 启动服务 无法访问static上的资源
- ¥15 解决websocket跟c#客户端通信