dan*_*996 1 c java return function assign
我用Java开发了几年,现在我想学习C,我注意到了一些差异.
在Java中,当我想从函数返回一些东西时(例如,我会写的读取用户输入)
String s;
s = new Scanner(System.in).nextLine();
Run Code Online (Sandbox Code Playgroud)
在CI会写
char s[20];
scanf("%d", name);
Run Code Online (Sandbox Code Playgroud)
区别在于,在Java中,函数返回一个可以直接赋值给变量的值,而在C中,函数将变量名称作为参数(分别是指向变量的指针).
我注意到了许多C函数.当我编写自己的函数时,我应该像在Java中习惯一样,还是应该使用从函数中赋值/返回值的C风格?
仅使用返回值在C中执行操作的最大考虑因素是缺少例外.与Java不同,可以在常规调用/返回过程之外报告错误条件,但C没有此类功能.换句话说,Scanner当没有下一行时,可以选择抛出异常; scanf没有这样的选择.
如果要从函数返回错误状态,则限制为(1)将其返回静态变量(并发安全),(2)将其作为返回值返回,或者(3)将其返回一个单独的"错误"对象.有时选项(2)和(3)组合在一起.
因此scanf,当状态作为返回值返回时,您经常会看到可能失败的C API结构,其余值通过指针修改.
if (scanf("%d%d", &i, &j) == 2) {
... // Got 2 numbers
} else {
fprintf(stderr, "Wrong input! Expected two numbers.");
}
Run Code Online (Sandbox Code Playgroud)
没有失败的API(例如,isalpha(ch)或tolower(ch))直接返回它们的值.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |