#include "iostream"
using namespace std;
#include "assert.h"
void Swap(int *ap,int *bp)
{
assert(ap == NULL || bp == NULL);//判断指针是否为空
int tmp = *ap;
*ap = *bp;
*bp = tmp;
}
int *funa()
{
int a = 10;
return &a;//错误,函数结束,空间释放了,下一个函数可使用该空间,所以不可返回引用或指针,若生存期不受函数影响则可以
}
int main()
{
int a = 10, b = 20;
int* const p = &a;/
int ar[5] = { 1,2,3,4,5 };
int* p = &ar[0];//int *p=ar;
int*& s = p;//指针引用//s是地址=ar,&s是地址的地址,*&s=ar
int& x = ar[0];//&x=ar
int(&br)[5] = ar;//数组的引用,引用数组必须两个属性,长度,数组名,引用的是整个数组
int* q = ar;
int(*m)[5] = &ar;//数组指针 sizeof(m) 4 unsigned int sizeof(br) 20 unsigned int sizeof(*m) 20 unsigned int
*m 0x00effb44 {1, 2, 3, 4, 5} int[5] m 0x00effb44 {1, 2, 3, 4, 5} int[5] *
ar 0x00effb44 {1, 2, 3, 4, 5} int[5] br 0x00effb44 {1, 2, 3, 4, 5} int[5] &
int(*m)[5] (*m)[5]=&ar
int ar[5] = { 1,2,3,4,5 };
int * ip = ar;
int& c = ar[0];
++ip;//地址+1 ar+1 ar=1,2,3,4,5 *ip=2
++c;//0下标加1 ar=2,2,3,4,5 c=2 会改变实体值
int * ip = NULL;
ip = funa();
cout << *ip << endl;//错误,失效指针
}



