zoukankan      html  css  js  c++  java
  • c++中的*和&

    int a = 5;
    int* b = &a;//这里写成int *b = &a;是等价的
    *b = 6;

    int* b = &a;表示定义一个int类型的指针b,该指针指向a变量的地址。*b = 6;表示将b指针指向地址存储的值改为为6,这时候a变量的值也变为了6,因为a变量的地址所存储值已经被修改了。

    int a = 5;
    int b = a;
    b = 6;

    运行以上代码后a的值为5。int b = a;表示重新开辟一个地址给变量b,该地址存储的值与a变量地址存储的值一致。b = 6;改变的是b变量的地址所存储的值,所以a变量的地址存储的值还是5。

    int a = 5;
    int& b = a;//这里写成int &b = a;是等价的
    b = 6;

    int& b = a;表示定义一个变量b,这里的b是一个变量名不是一个指针,但是这个b变量的地址和a变量的地址是同一个地址。所以b = 6;这里改变b变量指定的地址的值,a变量的值也改变了。

    定义方法的时候,int add(int& a,int& b){}和int add(int a,int b){}的区别:

    int add(int a,int b){}在调用方法传入参数的时候,方法内部会定义两个变量a和b,并且会为这两个变量开辟新的的地址,然后将传入的参数的值赋值到这两个地址。也就是说相对于拷贝了一份传入的参数,在方法内改变a和b的值不影响外部传入的参数的值。

    int add(int& a,int& b){}在调用方法传入参数的时候,方法内部会定义两个变量a和b,但是并不会为这两个变量开辟新的地址,而是分别指向传入的两个参数的地址,这时候在方法内部改变a和b的值,相当于修改外部传入参数的值,因为他们是同一份数据。

  • 相关阅读:
    fedora 20 安裝 及 配置桌面環境
    2014上半年—Linux操作系统—嵌入式开发—中考
    【hdu 1864】最大报销额
    【hdu 1067】Gap
    【t055】成绩统计
    【b094&&z14】靶形数独
    【z06】观光公交
    【u213&&t037】修剪花卉
    【t062】最厉害的机器人
    【t075】郁闷的记者
  • 原文地址:https://www.cnblogs.com/maycpou/p/14189818.html
Copyright © 2011-2022 走看看