美文网首页基础知识拾遗
理解C语言取地址符&

理解C语言取地址符&

作者: XX像条狗 | 来源:发表于2017-04-17 16:52 被阅读70次

&的两个常用地方

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语言取地址符&的有两个常用的地方。一个是,为指针变量赋值的时候 第二个是,在函数的形式参数中出...

  • C语言指针

    c语言指针其实只需要理解两个东西就可以了。 1. * 的含义(取值符) 2. & 的含义(取地址符) 指针的...

  • C语言15 取地址符号&的使用

    C语言15 取地址符号&的使用 &符号是取地址符,任何变量都可以使用&来获取地址,但不能用在常量上 探测 & 变量...

  • C语言_指针

    @(C语言) [toc] 指针:指针变量存储的是变量类型对应的变量的值 &(取地址符) &:是一个操作符,运用在内...

  • C++原生指针,引用与智能指针

    Ref 原生指针 c++原生指针来源于c语言,常与取地址运算符&搭配使用,基本操作有修改指针指向,解引用操作。常用...

  • 进阶-1

    复习 Go语言保留了C语言中的指针,但又有所不同;默认值为 nil操作符 & 取变量地址,* 通过指针访问目标对象...

  • 周笔记(一)

    (1)C语言中的&有三种使用方式。 1 取地址操作符。单目运算,与其后的变量或常量[https://www.bai...

  • c语言和python运算符的差别

    算数运算符: C 语言: 没有除法,只有取整“/”,和取模“%”,例如, 5/2 结果为 2 python: 除法...

  • c语言 - *指针 和 &地址

    最近在研究oc的底层,全是c/c++的代码,虽然以前学过也写过,其实不怎么用都忘得差不多了。 首先我们来了解一下 ...

  • 取地址符&做函数形参?

    今天用zlib例程里看到下面这句 想着很奇怪,参数里带取地址符是什么意思,然后搜了一下,发现一篇讲得特别仔细的好文...

网友评论

    本文标题:理解C语言取地址符&

    本文链接:https://www.haomeiwen.com/subject/thitzttx.html