2024年最全int & 到底是个啥?_int&(3),2024年最新推荐学习

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

*b=c;

}

void change2 (int &m,int &n)
{
int c;
c=m;
m=n;
n=c;
}

int main()
{
int a=1;int m=1;
int b=2;int n=2;

change1(&a,&b);
printf("-a-%d--\n",a);
printf("-b-%d--\n\n\n",b);

change2(&m,&n);                //错误,错误,错误
printf("-m-%d--\n",m);
printf("-n-%d--\n\n\n",n);
return 0;

}


#### 哎,chang2里面的形参不是需要两个地址吗? &m,&n,不是取地址吗?对啊!我传入两个地址,没毛病啊!这是当初学C语言心中的疑惑,但是我是个废柴!哦,书上说不用写&,直接写m,n就行了。好了我记住了!but!but!but!废柴是不知道原理是什么的,只知道这样子去用。好了,今天遇到问题报错了吧!废柴开始紧张了!


#### 在这里不得不吐槽教科书,垃圾,就写一句“注意int &不是取地址,是引用,详情自主百度”不就交代的很清楚了吗?害我这个废柴找了半天答案。垃圾教科书。



> 
> 这里引用“落辰衰”大佬的解释:
> 
> 
> 1、int;
> 
> 
> int是C++关键字,表示整型,其大小是32位有符号整型,表示的范围是-2,147,483,648 到 
> 
> 
> 2,147,483,647;在声明和定义变量时使用,它表示的意思是所声明或所定义的变量为整型变量。
> 
> 
> 如果其用于函数参数时,其传递方向为值传递,即只能将实参的值传递给形参,而不能将
> 
> 
> 形参的值传递给实参。
> 
> 
> 例如:通过这种方式去进行交换两个数是无法达到目的的。
> 
> 
> 例子1:
> 
> 
>  
> 
> 
> #include<iostream>  
>  using namespace std;              
>  voidswap1(inta,intb)  
>  {     
>       inttmp;     
>       tmp = a;      
>       a = b;      
>       b = tmp;      
>   }     
>   int main(){     
>       inta = 1;      
>       intb = 2;      
>       swap1(a, b);      
>       cout<<"a = "<<a<<endl;     
>       cout<<"b = "<<b<<endl;     
>       system("pause");     
>       return0;     
>   }
> 
> 
> 结果为:a=1
> 
> 
> b=2
> 
> 
> 因为传递的方式为值传递(单向传递);
> 
> 
> 2、int&;
> 
> 
> 这里的&不是取地址符号,而是引用符号,引用是C++对C的一个重要补充。变量的引用就是
> 
> 
> 变量的别名,讲的通俗一点就是另外一个名字,比如:“张三这个人在家里,老爸老妈叫他
> 
> 
> 三娃子,那么这个三娃子就是指张三这个人,如果叫张三去做某事,就是叫三娃子去做某事,
> 
> 
> 这两个名字指的是同一个人。”同样可以理解如果变量b是变量a的引用 那么无论a,b中任
> 
> 
> 何一个值改变,另外一个也相应的改变,在声明一个引用时,必须同时使之初始化,即声
> 
> 
> 明它代表哪一个变量。请注意:由于引用不是独立的变量,编译系统不给它单独分配存
> 
> 
> 储单元,因此在建立引用时只有声明没有定义,只是声明它与原有的某一变量的关系。
> 
> 
> 在声明一个变量的引用后,在本函数执行期间,该引用一直与其代表的变量相联系,不能
> 
> 
> 再作为其他变量的别名。说得简单点:张三和三娃子是指同一个人,不能李四也叫三娃子,
> 
> 
> 如果可以这样,叫三娃子去做什么,是叫李四呢还是张三呢,这就会乱套了。所以在C++中
> 
> 
> 一个引用变量只能对应一个原始的变量,不能对应两个或多个原始的变量;
> 
> 
> 下面简单说明引用:
> 
> 
> a)声明引用时必须指定它代表的是哪一个变量,即对它初始化。
> 
> 
> int &a=b;这样是声明a是变量b的引用
> 
> 
> 如果是int &a;这样就是错的,没有指定a代表哪一个变量。
> 
> 
> b)引用与其所代表的变量共享同一内存单元,系统并不为引用另外分配存储单元;
> 
> 
> 这个应该好理解;就像前面所说的,张三和三娃子都是同一个人,三娃子只是张三的别名。
> 
> 
> 因此,对于 int &a=b;这个例子来说,要输出a和b 的地址,肯定是相同的。
> 
> 
> c)怎样区分&是引用还是取地址符呢?方法是:判断&a这样的形式前是否有类型符即
> 
> 
> int &a=b;如果有类型符(int)则是引用,否则是取地址运算符。
> 
> 
> d)对引用的初始化,可以是一个变量名,也可以是另一个引用。
> 
> 
> 换句话说:张三的别名可以是三娃子,三小子……及其他多个别名
> 
> 
> 而三娃子也可以有其他的别名,比如说:老三,小三等
> 
> 
> 用程序可以这样:
> 
> 
> int a=1; //这里是定义一个整形变量
> 
> 
> int &b=a;//声明b是整型变量a的别名
> 
> 
> int &c=b;//声明c是整型引用变量b的别名
> 
> 
> int &d=a;//声明d是整型变量a的别名
> 
> 
> e)引用初始化后不能再被重新声明为另一变量的别名
> 
> 
> 即三娃子既然是指张三这个人,就不能让其他人也叫三娃子
> 
> 
> 即一个别名只能对应一个原始变量,但是一个原始变量可以有多个别名,而且别名也可以
> 
> 
> 由自己的别名。
> 
> 
>  
> 
> 
> C++中增加引用主要是作为函数参数,进行数据传递的功能;
> 
> 
> 我们知道如果用变量名作为实参,其传递方向是单向的,而用引用作为实参其传递方向
> 
> 
> 是双向的;
> 
> 
> 也许你会问,在c语言中不是有指针吗,用指针进行参数传递不也是双向的吗?其实其
> 
> 
> 本质上也是值传递,只不过是将变量的地址传给指针,通过指针获取变量的值,这样做
> 
> 
> 虽能得到结果,但通过指针运算符去访问有关变量,比较麻烦。
> 
> 
> 下面分析一下使用引用和使用指针变量作为函数形参的不同(以例子1中的swap函数为例):
> 
> 
> 1、如果使用引用,则不必在swap函数设立指针变量,指针变量要另外开辟内存单元,其
> 
> 
> 内容是地址。而引用不是一个独立的变量,并不占用内存单元
> 
> 
> 2、在main函数中调用swap函数时实参不必再变量名前加&以表示地址,系统传递的是
> 
> 
> 实参的地址不是实参的值。
> 
> 
> 3、使用指针变量时,为了表示指针变量所指向的变量,必须使用指针运算符\*,而使用
> 
> 
> 引用时,引用就代表该变量,不必使用指针运算符\*;
> 
> 
> 4、用引用完成的工作,用指针也能完成。但引用比指针的使用直观、方便,直截了当,
> 
> 
> 不必“兜圈子”,容易理解。有些过去只能用指针来处理的问题,现在可以用引用来代替,
> 
> 
> 从而降低了程序设计的难度。
> 
> 
> 对引用进一步说明:
> 
> 
> 1、不能建立void类型的引用。
> 
> 
> 因为任何实际存在的变量都是属于非void类型的,void的含义是无类型或空类型,
> 
> 
> void只是在语法上相当于一个类型而已。
> 
> 
> 2、不能建立引用的数组。
> 


![img](https://img-blog.csdnimg.cn/img_convert/8e2b7c5525c52082db2dd7f7325102fa.png)
![img](https://img-blog.csdnimg.cn/img_convert/a9b1a3eeeb333ccd2838847dc146baa9.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

存中...(img-Gopo9Xq2-1715753480259)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值