死磕数据结构(更新中)

循环结构

  • 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这个指针赋值给它。
    在这里插入图片描述

发布了109 篇原创文章 · 获赞 339 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zag666/article/details/105040549
今日推荐