关于主函数main()
int main(int argc, char *argv[]) {} 或者 int main(int argc, char **argv) {}
关于函数返回类型
return用于void;
return expression;与返回类型一致。
返回非引用类型:
函数的返回值用于初始化在调用函数处创建的临时对象。
string make_plural(size_t ctr, const string &word, const string &ending) { return (crt == 1) ? word : word + ending; }
返回引用:
当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。
const srting &shorterstring(const string &s1, const string &s2) { return s1.size() < s2.size() ? s1 : s2 ; }
千万不能返回局部变量的引用
当函数执行完毕时,将释放分配给局部对象的存储空间,此时,对局部对象的引用就会指向不确定的内存。
引用返回左值
返回引用的函数返回一个左值。这样的函数可用于任何要求使用左值的地方:
char &get_val(string &str, string::size_type ix) { return str[ix]; } int main(int argc, char *argv[]) { string s("a value"); cout<<s<<endl; get_val(s,0) = 'A'; cout<<s<<endl; return 0; }
这里给函数的返回值赋值,令人惊讶。由于函数返回值是一个引用,因此是正确的。如果不希望引用返回值被修改,应该申明为const
不要返回指向局部对象的指针
一旦函数结束,局部对象被释放,返回的指针就变成了指向不存在的对象,成为::悬垂指针