#include "stdafx.h"
#include<windows.h>
#include<iostream>
using namespace std;
void swap1(int iNum1, int iNum2);
void swap2(int& iNum1, int& iNum2);
void swap3(int* pNum1, int* pNum2);
void swap4(int* pNum1, int* pNum2);
void getMemory(char* pStr);
void getMemory(char* *pStr);
int main()
{
//指针:存储变量的内存地址
//定义: 数据类型*+p指针名字
//指针在定义的时候必须指向一个地址,可以是空地址(bullptr )或者可用的地址
int iNum1=3;
int iNum2 = 6;
//int* pNum=nullptr;//bullptr 空的地址:0x00000
//int* pNum2 = &iNum;//之一个引用分开。数据类型& &:取地址
//// &:取地址
//// *: 取值符号,
//iNum = 6;
//*pNum2 = 3;
//cout << pNum2 << endl;
//cout << *pNum2 << endl;
//swap3(&iNum1, &iNum2);
//cout << iNum1 << endl;
//cout << iNum2 << endl;//只交换地址,但是数值并未改变
//swap4(&iNum1, &iNum2);
//cout << iNum1 << endl;
//cout << iNum2 << endl;//只交换数值,但是地址并未改变
//申请地址 new 出来的地址并不会被销毁,必须主动去释放
//int* pNum = new int;//
////释放内存: delete 在不使用的时候必须去释放,否则容易造成内存泄漏
//if (nullptr != pNum)
//{
// delete pNum;
// pNum = nullptr;
//}
//
//int* pNum = new int;
//char* pStr = new char;
//char* pStr2 = "Hellow World!";
//cout << sizeof(pNum) << endl;
//cout << sizeof(pStr) << endl;
//cout << sizeof(pStr2) << endl;// 4,4,4 指针的大小全是4
char iNum3 = 0;
//char* pStr = &iNum3;
char* pStr = nullptr;
getMemory(&pStr);
strcpy_s(pStr, sizeof("Hellow World!") + 1, "Hellow World!");
cout << pStr << endl;
if (nullptr != pStr)
{
delete pStr;
pStr = nullptr;
}
//cout << *pStr << endl;
system("pause");
return 0;
}
void swap1(int iNum1, int iNum2)
{
}
void swap2(int & iNum1, int & iNum2)
{
}
void swap3(int * pNum1, int * pNum2)
{
int* pTemp = pNum1;
pNum1 = pNum2;
pNum2 = pTemp;
}
void swap4(int * pNum1, int * pNum2)
{
int pTemp = *pNum1;
*pNum1 = *pNum2;
*pNum2 = pTemp;
}
void getMemory(char * pStr)
{
pStr = new char[100];
}
void getMemory(char ** pStr)
{
*pStr = new char[100];
}