C语言编写void函数运行无输出,所写代码是否存在问题?
代码无输出的核心原因
你的代码运行后没有任何输出,是语法逻辑错误直接导致的,且当前代码未实现你预期的「带指针操作的void函数」功能,具体问题点如下:
for循环条件逻辑完全错误
你写的for(;c=0;)中,c=0是赋值操作而非相等判断:执行时会直接把0赋值给变量c,而C语言的条件判断规则里0等价于逻辑假,循环从启动时就判定为不满足执行条件,循环体内的printf("Hello");从来没有被执行,自然不会产生任何输出。
如果你需要写无限循环,标准写法是for(;;)或者while(1);如果是要判断变量c是否等于某个值,需要用相等比较运算符==,例如判断c等于0要写为c == 0。main函数写法不符合C语言标准
标准C规范中main函数的返回值类型必须是int,void main()属于非标准的老旧写法,部分编译器会直接编译失败,或者产生不可预期的运行行为。- 存在未初始化变量的隐患
你声明的局部变量int c;没有手动赋初始值,在栈上分配内存时会携带随机的垃圾值,虽然当前写错的循环逻辑没有触发这个问题,但后续如果直接读取这个未初始化的变量参与运算,很容易出现逻辑bug。 - 未匹配开发目标
你原本计划编写配合指针操作的void函数,但当前代码既没有自定义void函数,也没有任何指针相关的操作逻辑,和预期目标完全不符。
参考修正示例
下面是一个实现了「带指针参数的void函数」的可运行示例,你可以对照参考:
#include<stdio.h> // 自定义void函数:通过int类型指针修改外部变量的值 void setNum(int *target, int value) { *target = value; } int main() { int c; // 调用void函数,传入变量c的内存地址 setNum(&c, 100); printf("调用void函数后c的值为:%d\n", c); // 正确的循环打印示例,加break避免无限运行 for(;;) { printf("Hello\n"); break; } return 0; }
内容的提问来源于stack exchange,提问作者Fahin Mahmud
相关产品推荐
相关产品推荐

