為什么這樣編程不行?
#include <stdio.h>
/* Jone算出結(jié)果應(yīng)該怎么寫函數(shù)? */
int joneResult(int x, int y, int z)
{
? ?int sum = x+y+z;
? ?return sum/3; //這里是不是應(yīng)該將sum返回呢?
}
/* Jack沒有算出結(jié)果只說了一句話是不是應(yīng)該用無返回值函數(shù)? */
void jackResult(int x, int y, int z)
{
? ? printf("我算不出來\n");
? ? return;
}
int main()
{
? ? int a, b, c;
? ? a = 10;
? ? b = 20;
? ? c = 30;
? ? //Jone的返回值類型是什么?
? ? printf("Jone運算結(jié)果是:%d\n", joneResult(a,b,c));
? ? printf("Jack運算結(jié)果是:%s\n",jackResult(a,b,c));
? ? //Jack沒有算出結(jié)果只說了句話,是不是直接調(diào)用函數(shù)就可以了?
? ? return 0;
}
2017-08-12
如果你想寫一個返回字符串的函數(shù),你可以參考下面這個例子
#include <stdio.h>
#include <stdlib.h>
char *A(void)
{
????char *a = malloc(10);????????//創(chuàng)建堆空間,大小為10個字節(jié),并且指向char型指針a
????a = "hello";????????????????????? ?//這里的指針a存放的是字符串hello的頭個字母的地址
????return a;????????????????????????????返回一個char *a;
}
inrt main(void)
{
????char *a = A();????????????????//定義char *a,接收函數(shù)A的返回值
????printf("%s\n", a);????????? ? //打印字符串
????return0;
}
2017-08-12
jackResult(int x, int y, int z)是一個無返回值的函數(shù),所以是不能這樣寫的,你這樣寫是想讓它返回字符串,但是實際上無返回,這個函數(shù)只是執(zhí)行printf這個I/O函數(shù)而已,因此,不能這么編哦