&的两个常用地方

C语言取地址符&的有两个常用的地方。

一个是,为指针变量赋值的时候

int m = 214;

int *i = &m;

第二个是,在函数的形式参数中出现在形参变量的前面

void func(int* &i)

{

}

概念混淆

上述第一个概念,比较明确,取地址赋给指针型变量。

但是在学习数据结构写算法的时候,常会用到上面第二种情况,当指针类型和&符号在一起使用的时候,我变得很迷茫,一时搞不清这个符号到底是什么意思,实参该传什么呢? 指针变量还是取地址?

理解

实际上,当&在形参中出现的时候,只是表明这个函数的参数是引用传递而已(不必纠结它的取地址符含义)。同时在实际传参的时候,该传什么类型还是传什么类型。之所以,产生混淆,就是因为*和&同时出现在了参数列表中,没有理解指针其实不过也是一种特殊的类型而已, &只是用来表明这是一次引用传递。

引用传递和非引用传递的一个区别:

引用传递的时候,函数调用时的实参可以不用初始化。但是非引用传递的时候,实参必须初始化,否则在运行时会报错。

void func (int &i)

{

}

func(214); // 形参中的&表明是一次引用传递。参数类型是整形

void func(int * &i)

{

}

int * i;

func(i); // 参数类型是指针型而已。 传入的参数也应该是指针类型,可以不用初始化

void func(int * i)

{

}

int *i;

func(i); // 运行时报错!!(根据形参形式,表明非引用传递,函数调用时,变量需要提前初始化。)

c语言地址符作用,理解C语言取地址符相关推荐

  1. 视频教程-C语言-从汇编角度理解C语言的本质-C/C++

    C语言-从汇编角度理解C语言的本质 擅长JavaWeb开发,游戏逆向外挂与反外挂,游戏保护对抗 孙冉 ¥49.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅 ...

  2. c语言 结构体 占位符,深入理解结构体中占位符的用法

    深入理解结构体中占位符的用法 复制代码 代码如下: typedef union { struct x{ char a1 : 2; char b1 : 3; char c1 : 3; }x1; char ...

  3. C语言数组和指针的理解_在取地址运算上的操作_指针加减操作_a 和a 的区别

    1.一个实例+理论分析 在了解数组和指针的访问方式前提下,下面再看这个例子: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); pr ...

  4. c语言中数组名和数组名取地址理解

    1.数组名是个指针型常量,也就是值不能被改变.(指针常量和常量指针区别见本文) char *str = "hello"; char  ch[6] = "hello&quo ...

  5. c语言中语句作用,学习C语言的用途~

    原标题:学习C语言的用途~ C是基础的语言 C语言被广泛用于操作系统和编译器的开发 功能非常强 虽然现在不是最流行但是 最基础的东西是也比较好学的语言 如:金山的创始人江明 从30多岁开始学语言 学的 ...

  6. c语言程序设计课程作用,《C语言程序设计》课程标准

    <C语言程序设计>课程标准 适用专业: 三年制中职计算机应用专业 一.前言 (一)课程的性质 本课程是中职软件与信息服务专业的一门主干专业基础课程,旨在培养学生计算机编程基本思想.编程基本 ...

  7. c语言cyc函数,深入理解C语言

    导读:Dennis Ritchie过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不训的语言,今天很多语言都受到C的影 响,C++,Java,C#,Per ...

  8. c语言 b的作用,在C语言中各个标点符号的作用

    满意答案 rain200... 2013.05.17 采纳率:48%    等级:13 已帮助:16953人 分号 是一条语句的结束标志符,每一条语句都必须以分号结尾.冒号 一般在switch语句,三 ...

  9. %3c故乡%3e中语言描写的作用是什么,语言描写的作用

    语言描写的作用2019-05-05 14:39:30文/刘美娟 语言描写是塑造人物形象的重要手段,成功的语言描写总是鲜明地展示人物的性格,生动地表现人物的思想感情,深刻地反映人物的内心世界. 语言能显 ...

  10. c语言break语句作用,解析c语言switch中break语句的具体作用

    解析c语言switch中break语句的具体作用 问题:break在for循环.while循环等循环流程控制中起的作用是停止执行break后面的语句,跳出本次循环,并跳出该循环控制体: 在switch ...

最新文章

  1. 城市智能化发展中,AI公司应该做什么?
  2. CSS基础_Day01
  3. 当深度学习遇上量化交易——公开信息篇
  4. PsTools在***中的一点小应用
  5. Spark基本操作SparkSession,DatasetRow,JavaRDDRow
  6. Microsoft CRM 3.0 Mobile安装手记(二)——Server端安装
  7. Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果
  8. 优酷视频如何分享个人主页
  9. 2018-2019-1 20165325 《信息安全系统设计基础》第七周学习总结
  10. 看我打脸Message Pack
  11. linux+广播程序,Linux系统下广播程序制作介绍(上) (3)
  12. 为什么录像总是很暗_为什么拍出的的照片总是很暗?看下是不是这2个原因造成的...
  13. 番茄时间--C#实现
  14. 第三方接入-飞猪酒店商品发布流程
  15. ExtJS实战教程~~前言
  16. C# 获取url 状态,获取重定向(HttpWebRequest)
  17. 1一10到时的英文单词_1到10的英文单词
  18. 目标检测:YOLO V1、YOLO V2、YOLO V3 算法
  19. Android鹰眼轨迹追踪
  20. 二级管的正向恢复与反向恢复时间

热门文章

  1. C语言实现任何文件的加密解密
  2. php 汉字拼音字典排序,按拼音排序的小技巧
  3. 算数平均数、中位数、众数和几何平均数
  4. 干货 | 携程机票数据仓库建设之路
  5. 数据库的四个文本类型的差异
  6. xp计算机用户名和密码忘记了怎么办,xp电脑开机密码忘记了怎么办,xp忘记开机密码的解决方法...
  7. 分位数回归(Quantile Regression)
  8. Calendar类你可能不知道的坑
  9. @click.prevent.native作用
  10. 编写函数void reverse(string s),用递归算法使字符串s倒叙