指针简介
指针是一个值为内存地址的变量
基本使用
变量定义
int year ; //定义变量
year = 2016 ; //赋值
指针定义
int* ptr_year ; //定义指针
ptr_year = &year //赋值(赋地址)
*ptr_year = 1111 //修改0028FF44内的值
空指针(null pointer)
int *ptr1 = nullptr ; //等价于int *ptr1 = 0 ;
int *ptr2 = 0 ; //直接将ptr2初始化为字面常量0
指针平移
一般在指向数组时使用,我们知道数组的内存地址就是第一个值的内存地址
int a[] = {1,2,3,4,5} ;
int *ptr ;
ptr = a ; //即把数组首元素地址赋予指针ptr
*ptr++; --->指向第二个元素
引用(reference)
引用即别名–为对象起了另外一个名字
底层是指针,比指针更高级些,Java就是以引用完全封装了指针
int int_value = 1024 ; //定义变量并赋值
int& refValue = int_value ;
//refValue指向int_value,是int_value的另一个名字
/*引用必须初始化*/
refValue = 2048 ; //成功更改值
值传递
理论
形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说**,值传递是单向的**(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。
代码示例:
#include<iostream>
using namespace std;
/*值传递*/
void change1(int n)
{
cout << "值传递-函数操作地址" <<