区别 | 声明 | 定义 | 调用 |
---|---|---|---|
指针 | void swap(int *,int *); | void swap(int *a,int *b){ } |
swap(p1,p2); |
引用 | void swap(int &,int &); | void swap(int &a,int &b){ } |
swap(i,j); |
【指针】: 在 C++中,数组永远不会按值传递,它是传递第一个元素,准确地说是第 0个 的指针。html
// 如下三个声明等价node
void putValues( int* );
void putValues( int[] );
void putValues( int[ 10 ] );
复制代码
当进行数组参数传递,须要知道长度时,一种是经过额外表示长度的参数;另外一种是经过引用,以下:数组
【引用】:安全
//声明
void sort( int (&arr)[10] );
//定义
void sort( int (&arr)[10] )
{
}
//调用
int main()
{
int a[10] = {1,8,5,6,3};
sort(a);
return 0;
}
复制代码
from:矮油~ 数组引用:C++ 数组作参数 深刻分析bash
from: C++引用&函数传递数组例子函数
首先了解符号表,符号表在编译程序工做的过程当中须要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息通常以表格形式存储于系统中。如常数表、变量名表、数组名表、过程名表、标号表等等,统称为符号表。对于符号表组织、构造和管理方法的好坏会直接影响编译系统的运行效率。ui
做用:spa
对一个多遍扫描的编译程序,不一样遍所用的符号表也每每各有不一样。由于每遍所关心的信息各有差别。.net
from:从编译器角度理解C++中的引用和指针3d
符号表 | 变量名 | 变量对应地址 | 变量值 |
---|---|---|---|
指针 | 指针自身的变量名(而非指向的变量名) | 指针自身的地址值 | 指向对象的地址值(能够修改) |
引用 | 引用自身的不可变的名称(即对应变量的别名 | 对应对象的地址值(不可修改) | 对应对象的值 |
【指针】:值传递方式。在栈中开辟了内存空间以存放由主调函数放进来的实参的值。实参指针自己的地址值不会变。
【引用】:也做为局部变量在栈中开辟了内存空间,可是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操做都被处理成间接寻址,即经过栈中存放的地址访问主调函数中的实参变量。正由于如此,被调函数对形参作的任何操做都影响了主调函数中的实参变量。
★细节区别:
from:传递与指针传递区别(进一步整理)