1. 简单c语言函数调用无返回值问题
递归函数myPower的定义有逻辑错误,改成:
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
如果改成这样,会更高效:
double myPower(int a,int b)
{
if(0==b) return 1;
if(1==b) return a;
return myPower(a,b%2)*myPower(a*a,b/2);
}
例子1
#include <stdio.h>
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
int main()
{
int a=2,b;
for(b=0;b<11;b++)
printf("%lf ",myPower(a,b));
return 0;
}
2. C语言一般在什么情况下不需要返回值
所有的函数,除了空值类型外,都返回一个数值(切记,空值是ANSI建议标准所做的扩展,也许并不适合读者手头的C编译程序)。该数值由返回语句确定。无返回语句时,返回值是0。这就意味着,只要函数没有被说明为空值,它就可以用在任何有效的C语言表达式中作
为操作数。这样下面的表达式都是合法的C语言表达式。
x
=
power
(y);
if
(max
(x,y)
>100)
printf("greater;")
for
(ch=getchar(
);
isdigit
(ch);)
.
.
.
;
可是,函数不能作为赋值对象,下列语句是错误的:
s
w
a
p
(
x
,y)
=100;
C编译程序将认为这个语句是错误的,而且对含有这种错误语句的程序不予编译。
所有非空值的函数都会返回一个值。我们编写的程序中大部分函数属于三种类型。第一种类型是简单计算型—函数设计成对变量进行运算,并且返回计算值。计算型函数实际上是一个“纯”函数,例如sqr(
)和sin(
)。第二类函数处理信息,并且返回一个值,仅以此表示
处理的成功或失败。例如write(
),用于向磁盘文件写信息。如果写操作成功了,
write(
)返回写入的字节数,当函数返回-
1时,标志写操作失败。最后一类函数没有明确的返回值。实际上这类函数是严格的过程型函数,不产生值。如果读者用的是符合A
N
S
I建议标准的C编译程序,那么所有这一类函数应当被说明为空值类型。奇怪的是,那些并不产生令人感兴趣的结果的函数却无论如何也要返回某些东西。例如printf(
)返回被写字符的个数。然而,很难找出一个真正检查这个返回值的程序。因此,虽然除了空值函数以外的所有函数都返回一个值,我们却不必非得去使用这个返回值。有关函数返回值的一个常见问题是:既然这个值是被返回的,我是不是必须把它赋给某个变量?回答是:不必。如果没有用它赋值,那它就被丢弃了。
3. C语言中函数必须有返回值吗没有无法使用对吗
不是必须有返回值。如果没有返回值类型名为"void"。
void函数的定义:
void+函数名()//无类型+函数名
{//程序代码}
如果没有返回值类型名为"void", 整数类型int 类型返回值为整数类型int,以此类推??
类型名有:void int long float int* long* float* ??
(3)c语言程序不返回扩展阅读:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”。)
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
网络-函数
4. C语言中那个函数无返回值到底是怎么一回事
返回值是函数的计算结果,比如用函数计算1+1返回值就是2;
另外返回值并不一定的我们想要的结果,比如1+1如果返回3了,那就是函数代码有错误。
5. c语言没有返回值什么意思,通俗说.
很正常啊,没有返回值,就是不需要返回值。
比如:定义一个函数,在函数中打印信息到屏幕上。
voiddisplayMessage(char*msg){
#ifdefNEED_DEBUG
printf("%s ",msg);
#endif
}
很显然,调用这个函数,我不需要知道信息是不是已经打印到屏幕上了。(只有调试程序,才需要显示信息)
有很多类似的场景,比如:某个程序,根据给定的参数,在屏幕上绘制完成一个图像,而调用者不关心图像是不是绘得正确,因为正确与否不影响程序的继续执行。
6. c语言没有返回值什么意思,通俗说.
摘要 您好,没有返回值,就是不需要返回值的意思。
7. 在C语言中,主函数是不是必须要有返回值
在C语言中,主函数必须要有返回值。
main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。
在C语言标准中强制要求main函数的返回值类型为int,main函数的返回值是传递给操作系统,让操作系统判断程序的执行情况(是正常结束还是出现异常)。
(7)c语言程序不返回扩展阅读:
在C和C++中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void main(void) 或void main()。然而这是错误的。
main函数的返回值应该定义为int类型,虽然在一些编译器中,void main可以通过编译(如vc6),但并非所有编译器都支持void main,因为标准中从来没有定义过void main。g++3.2、dev C等环境中如果main函数的返回值不是int类型,根本无法通过编译。而gcc3.2则会发出警告。
8. C语言程序中,若函数无返回值,则应该对函数说明的类型是()A、int B、double C、char D、void
C语言程序中,若函数无返回值,则应该对函数说明的类型是void。
如果函数所体现的计算不需要返回结果,则数据类型可以指定为void类型。
注意,这种情况下在主调函数中调用该函数,该函数调用表达式不能被用作子表达式给其他变量赋值。
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
(8)c语言程序不返回扩展阅读
使用void类型指针要注意的几条规则:
1、void*类型只有地址信息没有类型信息,所以不能计算偏移。
C/C++中的指针通常来说有两个属性:
(1)指向变量
(2)指向对象的地址和长度
指针其实就是存储被指向变量的地址,并不保存其长度;而且存的这个地址仅是变量的首地址,并不是该变量占据内存的所有地址空间。
2、任何指针(包括函数指针)都可以赋值给void指针。
特点:
(1)不需要类型转换;
(2)只获得变量/对象地址而不获得大小。
3、void指针赋值给其他类型的指针时都要进行转换。
特点:转换类型也就是获得指向变量/对象大小。
4、void指针在强制转换成具体类型前,不能解引用。
原因:void指针只知道指向变量/对象的起始地址,而不知道指向变量/对象的大小(占几个字节)所以无法正确引用。
5、void指针不能参与指针运算,除非进行转换。
9. c语言里面的无返回值到底是怎么回事,谢谢了,大神帮忙啊
无返回值就是函数只执行数据处理,不返回值。函数定义时一般用void关键字表示无返回值。
如调用string类库中的int
i
=
strcmp("abc",
"abc")函数判断两个参数是不是相等,两个都"abc"
则i
=
0,这是有返回值的
10. C语言运行框输入完两行回车不返回结果
将i=i++修改为i++,让i值自增。
题主代码中i = i++有问题,i值不会自增,循环不会结束。会先使用i值,即将1赋值给i,所以在while循环中i的值会一直是1,循环无法停止,所以回车后不会结束。