循环结构
- for(int i=0; i<N; ++i){…… }的执行顺序:
先执行int i=0,然后执行判断语句i<N,然后执行循环体内的语句,最后执行循环变量变化语句++i,这就是循环的第一轮。下一步执行判断语句i<N,然后执行循环体内的语句,最后执行循环变量变化语句++i,然后一直循环这个过程直到判断为假循环停止。
函数
#include <iostream>
using namespace std;
void getResult(int r){
++r;
}
int main() {
int result=0;
getResult(result);
cout<<result; //输出的result仍为0;因为把实参result赋给r,r++改变的是r,但result并没有改变
}
- 如果想要result的值改变,则把第三行的r改成&r,
void getResult(int &r)
,直接引用result,而不是把result的值赋给r(引用型定义,即result替换掉r,需要改变实参的值时才这样定义,若不关心此值则没必要引用型定义);这样执行后result就变成1了。 - 同样的问题若是在C语言中则需要把上述代码该成:
void getResult(int *r){//把r定义为一个指针,*r是对r取值
++(*r);
}
int main() {
int result=0;
getResult(&result);//result是一个整型变量,但我们的函数参数是一个指向整型变量的指针,所以result前面加一个取地址符
}
getResult(&result);
括号里是地址。
- 对于基本类型,我们是定义一个指针然后传入它的地址;对于指针型变量就定义指针的指针型然后传入指针的地址P保存了p指针的地址,*P对P取值(把p还原出来了),然后把q这个指针赋值给它。