我有以下简单的代码:
mainc.c:
#include <stdlib.h>
#include "hello.h"
int main (int argc, char *argv[])
{
hello ();
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
你好ç:
#include "hello.h"
void hello (void)
{
printf ("Hello world!");
}
Run Code Online (Sandbox Code Playgroud)
你好.h:
#ifndef _HELLO_H_
#define _HELLO_H_
#endif
Run Code Online (Sandbox Code Playgroud)
我需要在 hello 中包含 stdio.h 才能访问 printf() 函数。
我应该把它包含在哪里?在 hello.c 或 hello.h 中?两种解决方案似乎都是正确的,是否有最佳实践?
这是 Rust 代码的一小段,我试图用它来理解 Rust 引用和取消引用:
fn main() {
let mut i: i32 = 1;
println!("i in main: {}", i);
increment(&mut i);
println!("i in main: {}", i);
let mut a = String::from("ABCD");
println!("a in main: {}", a);
addchr(&mut a);
println!("a in main: {}", a);
}
pub fn increment(i: &mut i32) {
*i += 1;
println!("i in increment: {}", *i);
}
pub fn addchr(s: &mut String) {
s.push('a');
println!("a in addchr: {}", s);
}
Run Code Online (Sandbox Code Playgroud)
在整数的情况下,接收引用的函数需要取消引用它(*i),但在字符串的情况下则不需要(取消引用似乎是“自动”)。
是什么造成了这种差异?是否只是关于内存分配的位置(堆栈或堆)?