海贼19-8班现场课
20569人加入学习
(0人评价)
编码能力训练课

0基础入门,突破欧拉50题

价格 ¥ 299.00
该课程属于 海贼19-8班(C++高薪班) 请加入后再学习

总结:

1、要把每个变量表示的语义信息,清晰地清楚地确认明白!有利于有许多变量进行复杂变化的过程。

例如get_num(int k, int n, int &x)函数中,涉及到

 

k                             表示还有多少个可能状态数需要跳跃?第一百万,还需要按顺序跳跃k = 999999个可能状态数;

n                            表示,我当前这个位置数字每向上变化一次,跳跃了多少个可能状态数:是一个阶乘数,fac[i - 1];

step = k / n            我利用当前这个位置数字,最多可以向上变化几次,来最大程度减少需要跳跃的可能状态数。(保证按顺序跳跃,维持字典序)

x                             表示当且这个位置上的为数字几,以及最后向上跳跃变化为了数字几?

i和num[i]                这个数字,有没有用过?(num[i] = 1则可用,= 0则不可用;只能用处于后面的数字,前面的数字都根据需要安排好了)

t                             用于遍历数字i,看看向上变化,还有哪些数字可以用,没用过,以及变化step次会停在哪个没有用过的数字i上;

2、为什么不是这里写地址&x,上面写指针*x呀?而是这里写变量x,上面写该变量的地址&x?对于更改x而言,是等价的写法吗?

int get_num(int k, int n, int &x)         //传一个“引用”进去?

......

        k = get_num(k, fac[i - 1], x)

 

 

int get_num(int k, int n, int *x) 

......

        k = get_num(k, fac[i - 1], &x)

 

#include<stdio.h>

void myswap1(int x, int y)

{

int t;

t=x;

x=y;

y=t;

}

 

void myswap2(int *p1, int *p2)

{

int t;

t=*p1;

*p1=*p2;

*p2=t;

}

 

void myswap3(int &x, int &y)

{

int t;

t=x;

x=y;

y=t;

}

 

int main()

{

int a,b;

a = 2;

b = 3;

myswap1(a,b); //作为对比,直接交换两个整数,显然不行

printf("调用交换函数后的结果是:%d 和 %d\n", a, b);

a = 2;

b = 3;

myswap2(&a,&b); //交换两个整数的地址

printf("调用交换函数后的结果是:%d 和 %d\n", a, b);

a = 2;

b = 3;

myswap3(a,b); //直接以变量a和b作为实参交换

printf("调用交换函数后的结果是:%d 和 %d\n", a, b);

 

return 0;

}

在第一个程序中,传值不成功的原因是指在形参上改变了数值,没有在实参上改变数值。

在第二个程序中,传地址成功的原因利用指针改变了原来的地址,所以实参就交换了。

在第三个程序中,引用是直接改变两个实参变量a,b的值,所以就交换了。

注:引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

  引用的声明方法:类型标识符 &引用名=目标变量名;

  【例】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名

  说明:

  (1)&在此不是求地址运算,而是起标识作用。

  (2)类型标识符是指目标变量的类型。

  (3)声明引用时,必须同时对其进行初始化。

  (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

   ra=1; 等价于 a=1;

  (5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。

  (6)不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。

[展开全文]

授课教师

高级算法研发工程师
C++算法工程师

课程特色

视频(41)
文档(51)
图文(71)