zmm5211314 2022-10-28 10:15 采纳率: 87.5%
浏览 40
已结题

C语言函数问题可以递归定义吗

img


这个问题中为什么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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月28日

悬赏问题

  • ¥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#客户端通信