C++入门:按值传递与作用域解析

需积分: 10 1 下载量 63 浏览量 更新于2024-08-19 收藏 182KB PPT 举报
"C++入门教程,讲解了按值传递的概念,并通过示例代码展示了如何交换两个整数的值。此外,还介绍了C++中的变量作用域、const限定符以及一些基础概念,如全局作用域、局部作用域和const变量的使用。" 在C++编程中,"按值传递"是指在函数调用时,将实参的值复制一份传递给形参。在这个例子中,`swap`函数接收两个整数`x`和`y`作为参数,但它们只是原变量`a`和`b`的副本。在函数内部对`x`和`y`进行的任何修改都不会影响到外部的`a`和`b`。因此,尽管在`swap`函数内部进行了交换,但因为是按值传递,所以最终输出的`a`和`b`的值并没有改变。 关于变量的作用域,C++中有全局作用域和局部作用域。全局变量在整个程序中都可访问,而局部变量仅在其定义的代码块内有效。例如,`main`函数内的`s2`变量和全局的`s1`变量就有着不同的作用域。在嵌套作用域中,局部变量可以遮蔽同名的全局变量,就像示例中的`s1`一样。 `const`限定符用于声明常量,一旦定义并初始化后,其值就不能再被改变。它提供了一种类型安全的方式来声明不可修改的值。例如,`const int bufSize=512;`声明了一个名为`bufSize`的常量,它的值是512,之后尝试修改`bufSize`的值会导致编译错误。 小练习中,第一题的答案是:b、`int cnt=0; const int sz=cnt;`是合法的,因为它在定义`sz`时就用已初始化的`cnt`赋值。a、`const int buf;`是不合法的,因为没有初始化。c、`cnt++; sz++;`也是不合法的,因为`sz`是常量,不能被修改。第二题,如果想要改善风格,可以避免在函数内部修改全局变量,而是通过返回值或者引用参数来达到目的。 总结起来,这个C++入门教程涵盖了基础的变量和类型知识,包括按值传递、作用域规则和`const`限定符的使用,这些都是理解C++程序行为的关键概念。学习这些概念对于初学者来说是非常重要的,有助于他们编写更健壮、更易于维护的代码。