You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以下C语言代码运行时无法打印length长度值是什么原因

问题原因

  • 你在printf中错误地传入了函数名而非要打印的变量值:
    1. 第一个printf传入了initialize函数名,实际是把函数的内存地址作为参数传递,同时你的格式占位符有2个%d,但仅提供了1个参数,属于参数不匹配的未定义行为。你要打印矩形的长和宽,应该直接传入结构体成员r.length、r.breadth。
    2. 第二个printf传入了changelength函数名,同样是传递了函数地址而非length的数值,要打印length直接传入r.length即可。
  • 额外说明:main函数里单独调用area(r);没有接收返回值的话属于无意义调用,不过你后续打印的时候重新调用了area(r),这部分不影响最终打印结果,仅属于冗余代码。

修正后的可运行代码

#include<stdio.h>
#include<stdlib.h>

struct rect
{
   int length;
   int breadth;
};

void initialize(struct rect *r,int l , int b)
{
    r->length=l;
    r->breadth=b;
}

void changelength(struct rect *r,int l)
{
    r->length=l;
}

int area(struct rect r)
{
    return(r.length*r.breadth);
}

int main()
{
    struct rect r;
    initialize(&r,10,5);
    changelength(&r,3);
    printf("The rectangle is %d and %d\n", r.length, r.breadth);
    printf("The length is %d\n", r.length);
    printf("The area is %d", area(r));
    return 0;
}

内容的提问来源于stack exchange,提问作者Rishav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 16:54:00